dirty indicator: only repaint in exposed rect