Just a note, if you set your brush.color := bcNone or Brush.Style := bsClear; that should prevent the background
erase when updating screen during the onpaint event.
You could also possible handle the WM_EraseBkGrd message and redirect it but I've found using the brush trick
works better...
Also, by doing this, if you have un painted areas, you can place a clip rectangle there and do a background paint...