             }            
 
             preferredWidth = Math.max(preferredWidth, li.getPreferredBoundsWidth());
-            preferredHeight += li.getPreferredBoundsWidth(); 
+            preferredHeight += li.getPreferredBoundsHeight(); 
             
             var vrr:Boolean = (reqRows != -1) && (visibleRows < reqRows);
 
             if (vrr || (reqRows == -1))
             {
                 var mw:Number =  hasPercentWidth(li) ? li.getMinBoundsWidth() : li.getPreferredBoundsWidth();
-                var mh:Number = hasPercentHeight(li) ? li.getMinBoundsHeight() : li.getPreferredBoundsWidth();                   
+                var mh:Number = hasPercentHeight(li) ? li.getMinBoundsHeight() : li.getPreferredBoundsHeight();                   
                 minWidth = Math.max(mw, minWidth);
                 minHeight += mh;
             }

    {
        var rowCount:uint = layoutTarget.numLayoutElements;
        llv.length = rowCount;
        llv.defaultMajorSize = typicalLayoutElement.getPreferredBoundsWidth();
        llv.minorSize = typicalLayoutElement.getPreferredBoundsWidth();
        
        var measuredRowCount:int = (requestedRowCount != -1) ? requestedRowCount : rowCount;

        
        // TBD: don't assume typicalLayoutElement is set, use 1st row...
        var typicalWidth:Number = typicalLayoutElement.getPreferredBoundsWidth();
        var typicalHeight:Number = typicalLayoutElement.getPreferredBoundsHeight();
        llv.length = layoutTarget.numLayoutElements;        
        llv.minorSize = Math.max(llv.minorSize, typicalWidth);
        llv.defaultMajorSize = typicalHeight;
