                     
                     if (numContentCols > 0)
                     {
-                        colWidth = availableWidth / numContentCols;
+                        var splitWidth:Number = availableWidth / numContentCols;
                         
                         for (j = 0; j < numContentCols; j++)
                         {
                             col = contentCols[j];
-                            col.setActualWidth(Math.ceil(Math.max(col.width, colWidth)));
+                            
+                            colWidth = Math.max(col.width, splitWidth);
+                            if (!isNaN(col.maxWidth))
+                                colWidth = Math.min(colWidth, col.maxWidth);
+                            
+                            col.setActualWidth(Math.ceil(colWidth));
                         }
                     }
                 }

                        
                        if (constraintsDetermineHeight(elementInfo))
                            rowHeight = Math.max(rowHeight, extY + layoutElement.getMinBoundsHeight());
                        
                        row.setActualHeight(Math.ceil(rowHeight));
                    }

                        if (constraintsDetermineWidth(elementInfo))
                            colWidth = Math.max(colWidth, extX + layoutElement.getMinBoundsWidth());
                        
                        // bound with max width of column
                        if (!isNaN(col.maxWidth))
                            colWidth = Math.min(colWidth, col.maxWidth);
                        
                        col.setActualWidth(Math.ceil(colWidth));
                    }
                }
