Ah yes, that is right, the menu's save the screen part used for the menu before displaying the menu, and on exit copy the saved part back. This to avoid redrawing the whole screen.
Erasing can easily be done by writing black pixels to a section of the screen with one of the display functions, but you would still need to redraw the grid etc. I believe the section of the display is copied into a second screen buffer, so it is possible to setup a new screen in that buffer and overwrite the saved bit.
Looking at your pictures makes me think that you keep on sampling even when a menu item is open, which is not the case in short time base operation if I'm not mistaken. This means you would have to check in your code that builds up the screen if a menu is opened and if so also update in the second screen buffer.
Don't pin me down on this, because it is all from memory. Did not look at the code.