            case VerticalAlign.CONTENT_JUSTIFY: 
                return Math.max(elt.getPreferredBoundsHeight(), containerHeight);
        }
-       return elt.getPreferredBoundsHeight();
+       return NaN; // not constrained
     }
 
     //  - virtual layout only - 

                    elt = layoutTarget.getVirtualElementAt(index);
                    h = calculateElementHeight(elt, targetHeight, containerHeight);
                    y = calculateElementY(elt, h, containerHeight);
                    elt.setLayoutBoundsPosition(elt.getLayoutBoundsX(), y);
                    elt.setLayoutBoundsSize(elt.getLayoutBoundsWidth(), h);
                }
             }
        }

        for (; (x < maxVisibleX) && (index < eltCount); index++)
        {
            var elt:ILayoutElement = layoutTarget.getVirtualElementAt(index);
            var w:Number = fixedColumnWidth; // NaN for variable width columns
            var h:Number = calculateElementHeight(elt, targetHeight, containerHeight); // can be NaN
            elt.setLayoutBoundsSize(w, h);
            w = elt.getLayoutBoundsWidth();        
            h = elt.getLayoutBoundsHeight();
            var y:Number = calculateElementY(elt, h, containerHeight);
            elt.setLayoutBoundsPosition(x, y);
            llv.cacheDimensions(index, elt);
            x += w + gap;
        }
