         }
         
         // Find the index of the last GridColumn.visible==true column
+        
         const columns:IList = grid.columns;
         const lastVisibleColumnIndex:int = (columns) ? grid.getPreviousVisibleColumnIndex(grid.columns.length) : -1;
         if (!columns || lastVisibleColumnIndex < 0)
-        {
-            // HACK: Make sure columnHeaderGroup fixes itself
-            var dg:DataGrid = grid.dataGrid;
-            if (dg && dg.columnHeaderGroup)
-                dg.columnHeaderGroup.invalidateDisplayList();
             return;
-        }
         
         // Layout the item renderers and compute new values for visibleRowIndices et al
         

            // GridColumn.visible==false columns have a typical size of (0,0)
            // to distinguish them from the GridColumn.visible==true columns
            // that aren't in view yet.
            if (!column.visible)
            {
                gridDimensions.setTypicalCellWidth(columnIndex, 0);

                if (renderer.parent != rendererLayer)
                    rendererLayer.addElement(renderer);
                newVisibleItemRenderers.push(renderer);

                initializeItemRenderer(renderer, rowIndex, colIndex);
                
                // TBD(hmuller): if takeVisibleItemRenderer returned true, should we skip prepare?()
                renderer.prepare(!createdGridElement);
                
                var colWidth:Number = gridDimensions.getColumnWidth(colIndex);
