rect.height = ch - rect.y;
                   m_rowLabelWin->Refresh( TRUE, &rect );
                   rect.width = cw;
-                  m_gridWin->Refresh( TRUE, &rect );
+                  m_gridWin->Refresh( FALSE, &rect );
                 }
 
                 ShowCellEditControl();
                   rect.height = m_colLabelHeight;
                   m_colLabelWin->Refresh( TRUE, &rect );
                   rect.height = ch;
-                  m_gridWin->Refresh( TRUE, &rect );
+                  m_gridWin->Refresh( FALSE, &rect );
                 }
 
                 ShowCellEditControl();
     {
         wxRect r( SelectionToDeviceRect() );
         ClearSelection();
-        if ( !GetBatchCount() ) m_gridWin->Refresh( TRUE, &r );
+        if ( !GetBatchCount() ) m_gridWin->Refresh( FALSE, &r );
     }
 }
 
 
         wxClientDC dc( m_gridWin );
         PrepareDC( dc );
-        DrawAllGridLines( dc );
+        DrawAllGridLines( dc, wxRegion() );
     }
 }
 
             {
                 wxClientDC dc( m_gridWin );
                 PrepareDC( dc );
-                DrawAllGridLines( dc );
+                DrawAllGridLines( dc, wxRegion() );
             }
             else
             {
 
         for (i = 0; i < 4; i++ )
             if ( need_refresh[i] && rect[i] != wxGridNoCellRect )
-                m_gridWin->Refresh( TRUE, &(rect[i]) );
+                m_gridWin->Refresh( FALSE, &(rect[i]) );
     }
     else
     {
         r = SelectionToDeviceRect();
         ClearSelection();
-        if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
+        if ( r != wxGridNoCellRect ) m_gridWin->Refresh( FALSE, &r );
 
         m_selectedTopLeft.Set( row, 0 );
         m_selectedBottomRight.Set( row, m_numCols-1 );
         r = SelectionToDeviceRect();
-        m_gridWin->Refresh( TRUE, &r );
+        m_gridWin->Refresh( FALSE, &r );
     }
 
     wxGridRangeSelectEvent gridEvt( GetId(),
 
         for (i = 0; i < 4; i++ )
             if ( need_refresh[i] && rect[i] != wxGridNoCellRect )
-                m_gridWin->Refresh( TRUE, &(rect[i]) );
+                m_gridWin->Refresh( FALSE, &(rect[i]) );
     }
     else
     {
     
         r = SelectionToDeviceRect();
         ClearSelection();
-        if ( r != wxGridNoCellRect ) m_gridWin->Refresh( TRUE, &r );
+        if ( r != wxGridNoCellRect ) m_gridWin->Refresh( FALSE, &r );
 
         m_selectedTopLeft.Set( 0, col );
         m_selectedBottomRight.Set( m_numRows-1, col );
         r = SelectionToDeviceRect();
-        m_gridWin->Refresh( TRUE, &r );
+        m_gridWin->Refresh( FALSE, &r );
     }
 
     wxGridRangeSelectEvent gridEvt( GetId(),
         // various Refresh() calls
         for (i = 0; i < 4; i++ )
             if ( need_refresh[i] && rect[i] != wxGridNoCellRect )
-                m_gridWin->Refresh( TRUE, &(rect[i]) );
+                m_gridWin->Refresh( FALSE, &(rect[i]) );
     }
 
     // only generate an event if the block is not being selected by