SWTでダブルバファリンするにはどうすればいいの?

コンストラクタで
offImage = new Image(null, 300, 300);
offGC = new GC(offImage);
addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
MaterialViewer.this.paintControl(e);
}
});

みたいなもん作って、


void paintControl(PaintEvent e) {
if (image != null) {
offGC.drawImage(image, 0, 0);
}
if (text != null) {
offGC.drawString(text, 10, 20);
}
drawer.paint(offGC);
e.gc.drawImage(offImage, 0, 0);
}

やってみたがダメ