             {
                 var oldColumnWidth:Number = gridDimensions.getColumnWidth(columnIndex);
                 columnWidth = oldColumnWidth + Math.min(availableWidth, columnWidthDelta);
-                
-                minColumnWidth = gridColumn.minWidth;
-                maxColumnWidth = gridColumn.maxWidth;
-                if (!isNaN(minColumnWidth))
-                    columnWidth = Math.max(columnWidth, minColumnWidth);
-                if (!isNaN(maxColumnWidth))
-                    columnWidth = Math.min(columnWidth, maxColumnWidth);
-                
+                columnWidth = clampColumnWidth(columnWidth, gridColumn);
                 gridDimensions.setColumnWidth(columnIndex, columnWidth);  // store the column width
                 availableWidth -= (columnWidth - oldColumnWidth);
             }

            if (isNaN(gridColumn.width)) // if this column's width wasn't explicitly specified
            {
                flexibleColumnCount += 1;
                
                // Clamp columnWidth to the gridColumn's min,maxWidth
                
                var minColumnWidth:Number = gridColumn.minWidth;
                var maxColumnWidth:Number = gridColumn.maxWidth;
                if (!isNaN(minColumnWidth))
                    columnWidth = Math.max(columnWidth, minColumnWidth);
                if (!isNaN(maxColumnWidth))
                    columnWidth = Math.min(columnWidth, maxColumnWidth);
            }
            else
                columnWidth = gridColumn.width;

                var renderer:IGridItemRenderer = createTypicalItemRenderer(columnIndex);
                if (isNaN(cellWidth))
                {
                    cellWidth = clampColumnWidth(renderer.getPreferredBoundsWidth(), column);
                    gridDimensions.setTypicalCellWidth(columnIndex, cellWidth);
                }
                if (isNaN(cellHeight))
