D.D.
She sounds like she doesn't understand that what she says or does impacts other people; kind of just in her own little place where the world revolves around her. Its going to be up to you to shut her down and show her how you want to be treated.
When she starts talking about your weight interrupt her and say something like 'You know I am doing what I need to do to be strong and healthy for my family. Please don't talk about my weight.' If she starts to say something other than I'm sorry interrupt again with 'This isn't a topic up for discussion'. Lather rinse repeat as often as needed. She may or may not get the memo to shut her trap but I know you'll feel better standing up for yourself.
Make sure she's treating the children with kindness during her visits and not making comments to them. She's shown you and your husband that she's not a nice person in all situations. While she is your children's only grandparent she needs to treat them well. If not then I'd have her stay elsewhere and limit her visits at your house.