void wxOverlayImpl::BeginDrawing( wxDC* dc)
 {
     wxDCImpl *impl = dc->GetImpl();
-    wxWindowDCImpl *win_impl = wxDynamicCast(impl,wxWindowDCImpl);
+    wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl);
     if (win_impl)
     {
         win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) );
-        wxSize size = dc->GetSize() ;
-        dc->SetClippingRegion( 0 , 0 , size.x , size.y ) ;
+        dc->SetClippingRegion( m_x , m_y , m_width , m_height ) ;
     }
 }
 
 void wxOverlayImpl::EndDrawing( wxDC* dc)
 {
     wxDCImpl *impl = dc->GetImpl();
-    wxWindowDCImpl *win_impl = wxDynamicCast(impl,wxWindowDCImpl);
+    wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl);
     if (win_impl)
         win_impl->SetGraphicsContext(NULL);