 		const startCellX:Number = gridDimensions.getCellX(0 /* rowIndex */, firstVisibleColumnIndex);
 		const columnGap:int = gridDimensions.columnGap;
         
-		for (var columnIndex:int = firstVisibleColumnIndex; (width > 0) && (columnIndex < columnCount); columnIndex++)
+		for (var columnIndex:int = firstVisibleColumnIndex;
+            (width > 0) && (columnIndex >= 0) && (columnIndex < columnCount);
+            columnIndex = grid.getNextVisibleColumnIndex(columnIndex))
 		{
             var cellHeight:Number = gridDimensions.getTypicalCellHeight(columnIndex);
 			var cellWidth:Number = gridDimensions.getTypicalCellWidth(columnIndex);

        
        const columnWidthDelta:Number = Math.ceil(availableWidth / flexibleColumnCount);

        for (columnIndex = firstVisibleColumnIndex; (columnIndex < columnCount) && (availableWidth >= 1.0); columnIndex++)
        {
            gridColumn = getGridColumn(columnIndex);
            

        // Layout the row and column separators. 
        
        const lastRowIndex:int = paddedRowCount - 1;

        visibleRowSeparators = layoutLinearElements(grid.rowSeparator, grid.overlayLayer, 
            visibleRowSeparators, oldVisibleRowIndices, visibleRowIndices, layoutRowSeparator, lastRowIndex);
        
        visibleColumnSeparators = layoutLinearElements(grid.columnSeparator, grid.overlayLayer, 
            visibleColumnSeparators, oldVisibleColumnIndices, visibleColumnIndices, layoutColumnSeparator, lastVisibleColumnIndex);
        
        // HACK
        var dg:DataGrid = grid.gridOwner as DataGrid;
