     //
     //--------------------------------------------------------------------------
     
+    private function get preferredWidth():Number
+    {
+        if (!isNaN(_explicitWidth))
+            return _explicitWidth;
+        if (!isNaN(_viewWidth))
+            return _viewWidth;
+        return super.width;
+    }
+
+    private function get preferredHeight():Number
+    {
+        if (!isNaN(_explicitHeight))
+            return _explicitHeight;
+        if (!isNaN(_viewHeight))
+            return _viewHeight;
+        return super.height;
+    }
+        
     /**
      *  @inheritDoc 
      */

                                        height:Number,
                                        postLayoutTransform:Boolean = true):void
    {
        // Calculate the width and height pre-transform:
        var m:Matrix;
        if (postLayoutTransform)
            m = transform.matrix;
        if (!m)
        {
            if (isNaN(width))
                width = this.width;
            if (isNaN(height))
                height = this.height;
        }
        else
        {
            var newSize:Point = MatrixUtil.fitBounds(width, height, m,
                                                     this.width,
                                                     this.height,
                                                     this.width, this.height,
                                                     this.width, this.height);

            if (newSize)
            {
                width = newSize.x;
                height = newSize.y;
            }
            else
            {
                width = this.width;
                height = this.height;
            }
        }

        if (this.width != width || this.height != height)
        {
            super.width = width;
            super.height = height;
        }
    }
    
    /**
     *  @inheritDoc
     */

     */
    public function getPreferredBoundsHeight(postLayoutTransform:Boolean = true):Number
    {
        return transformHeightForLayout(preferredWidth, preferredHeight, postLayoutTransform);
    }
    
    /**
