i think as his mum, it's totally your decision! If you don't mind it and think it's a bit cute, like some of the other posters here, then no issue, you'd not be here asking.
He is 2.6, so young enough not to be bothered by it, but it kinda has to stop now, and as for her using it in public? How gut wrenchingly awful!
Others can say yr being unreasonable, but they either fall into the cute camp, or it doesn't bother me camp.
I suppose you could just level with her, being totally cards on table & matter of fact and tell her you personally hated it as a child, and you don't like it any more now you're older.
Say that it's actually getting to you so badly, that to be honest it's making your blood boil, and to stop a scene, his own given name, as agonised over by you and his dad is the only name you want him known by.
If she ever uses it again, in any circumstances, correct her. Continue to do so at any and everytime she uses it. She say's piglet, you say his name. If you have to correct her loudly in public, 'it's david, mum' and then call your own son over or better go over to where he is. so if she's told off in front of all and sundry, so be it, she was warned!
Grandparents are exactly the same as toddlers, you have to be consistent and firm!
Really feel for you, that would bug the shit out of me, and i've never had a nickname!