int i;
     bool result = FALSE;
 
+    // Clear the attribute cache as the attribute might refer to a different
+    // cell than stored in the cache after adding/removing rows/columns.
+    ClearAttrCache();
 #if 0
     // if we were using the default widths/heights so far, we must change them
     // now
 
           HighlightCell(dc, TRUE);
 #endif
     }
-  else
+  else if (!wxIPE_HIGHLIGHT)
     {
       // 1) Why isn't this needed for Windows??
       // Probably because of the SetValue?? JS.
       //
       // 3) It *is* needed for Motif - michael
       //
-#if defined(__WXMOTIF__)
-      if ((wxIPE_HIGHLIGHT || !(m_editable && m_editInPlace)))
+      // 4) It *seems* to be needed whenever
+      //    wxIPE_HIGHLIGHT is not set (i.e.
+      //    for both wxGTK and wxMOTIF)... SN.
+      if (!(m_editable && m_editInPlace)))
           HighlightCell(dc, TRUE);
-#endif
     }
 
   dc->DestroyClippingRegion();