You could try putting the following in your constructor after the InitiliseComponent call.
SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint, true);
EDIT:
If you’re giving this a go, if you can, remove your own double buffering code and just have the control draw itself in response to the appropriate virtual methods being called.