Zeichne in einer von TCustomControl abgeleiteten Klasse.
Überschreibe dort procedure Paint;
Dann Zeichne erst alles in ein BufferBitmap und kopiere das am Schluss auf den Canvas mit z.B. Draw(..);
Dann flackert nichts mehr.
DoubleBuffered nützt unter GTK nichts.