             }
         }
         
-        return bound(height, minRowHeight, maxRowHeight);
+        return (!isNaN(height)) ? bound(height, minRowHeight, maxRowHeight) : height;
     }
     
     /**

    public var defaultColumnWidth:Number = 150;
    
    //----------------------------------
    //  fixedRowHeight
    //----------------------------------
    
    private var _fixedRowHeight:Number = NaN;
    
    /**
     *  If fixedRowHeight is set, calling getRowHeight will return
     *  its value for every row. Individual cell heights are not
     *  affected, but calling getCellBounds will return bounds
     *  respecting fixedRowHeight. The fixedRowHeight is always
     *  bounded by the minRowHeight and maxRowHeight.
     * 
     *  @default NaN
     */
    public function get fixedRowHeight():Number
    {
        return _fixedRowHeight;
    }
    
    /**
     *  @private
     */
    public function set fixedRowHeight(value:Number):void
    {
        if (value == _fixedRowHeight)
            return;
        
        _fixedRowHeight = bound(value, _minRowHeight, _maxRowHeight);
    }
    
    //----------------------------------
    //  minRowHeight

    public function getCellY(row:int, col:int):Number
    { 
        // no cache so we use default heights for each row.
        if (!variableRowHeight || rowList.length == 0)
            return row * (defaultRowHeight + rowGap);
        
        if (row == 0)
