bmp.SetMask(mask)
         self.bmp = bmp
 
-        self.SetScrollbars(20, 20, self.maxWidth/20, self.maxHeight/20)
+        self.SetVirtualSize((self.maxWidth, self.maxHeight))
+        self.SetScrollRate(20,20)
 
         if BUFFERED:
             # Initialize the buffer bitmap.  No real DC is needed at this point.
             # wx.PaintDC and then blit the bitmap to it when dc is
             # deleted.  Since we don't need to draw anything else
             # here that's all there is to it.
-            dc = wx.BufferedPaintDC(self, self.buffer)
+            dc = wx.BufferedPaintDC(self, self.buffer, wx.BUFFER_VIRTUAL_AREA)
         else:
             dc = wx.PaintDC(self)
             self.PrepareDC(dc)
         dc.SetPen(old_pen)
         dc.DrawRectangle(490,90, 20,20)
 
+        dc.GradientFillLinear((20, 260, 50, 50),
+                              "red", "blue")
+        dc.GradientFillConcentric((20, 325, 50, 50),
+                                  "red", "blue", (25,25))
         self.DrawSavedLines(dc)
         dc.EndDrawing()