fix redraw handling to catch all cases