wxScrolledWindow.__init__(self, parent, -1)
 
         self.clrList = colourdb.getColourList()
+        #self.clrList.sort()
         self.bg_bmp = images.getGridBGBitmap()
 
         EVT_PAINT(self, self.OnPaint)
         dc = evt.GetDC()
         if not dc:
             dc = wxClientDC(self)
+            rect = self.GetUpdateRegion().GetBox()
+            dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height)
         self.TileBackground(dc)
 
 
             stop = pixStop / self.lineHeight
         else:
             start = 0
-            stop = len(numColours)
+            stop = numColours
 
         for line in range(max(0,start), min(stop,numColours)):
             clr = colours[line]
         dc.EndDrawing()
 
 
+# On wxGTK there needs to be a panel under wxScrolledWindows if they are
+# going to be in a wxNotebook...
+class TestPanel(wxPanel):
+    def __init__(self, parent):
+        wxPanel.__init__(self, parent, -1)
+        self.win = TestWindow(self)
+        EVT_SIZE(self, self.OnSize)
+
+    def OnSize(self, evt):
+        self.win.SetSize(evt.GetSize())
+
+
 
 #----------------------------------------------------------------------
 
 
 def runTest(frame, nb, log):
-    win = TestWindow(nb)
+    win = TestPanel(nb)
     return win
 
 #----------------------------------------------------------------------