The way I've done it in the past in 2D, is to not actually display the buffer you're drawing on, but read the pixels and draw a solid rect (same colour as pixel) for each one. The size of the rects can vary according to zoom level.
I guess this method might not be ideal if you have a large zoom window, and you're redrawing the entire screen every frame.
I guess this method might not be ideal if you have a large zoom window, and you're redrawing the entire screen every frame.