I really like DeeTee's suggestion. Rather than taking her comment as a complaint (which is obviously is) treat it as if she were making an appropriate comment - if you can, ust in before she says anything actively unpleasant.
eg
Mom (in obviously complaining tone) "Did you see what Chris got me.."
You " That pictures of his daughter? I did- it's such a thoughtful gift, isn't it. I love that picture of her, and it's great to have an older picture to go with the more recent ones you got from the grandchildren themselves. I thought when you opened it how thoughtful t was of Chris to give a gift that went so well with what the grandchildren gave you"
If she ignores that and goes on to make complaints then I think, as other posters have said, it's OK to be blunt. Something like "That's a really ungracious thing to say. It's really rude, and it's very hurtful. Why would you think it's OK to make that kind of comments.
And if she continues then don't engage. "I've already told you that I feel it's rude and hurtful of you make comments like this.
It sounds as though she is pretty passive-aggressive - she won't give you gift ideas then complains she doesn't get what she wants. She didn't come out and say why she didn't like the picture, she sounds as if she was angling for you to be the one who commented on it.