 
     /**
      * @private
-     *  Computes the union of the preferred size of the visible 
-     *  scrollbars and the viewport.  
+     *  Computes the union of the preferred size of the visible scrollbars 
+     *  and the viewport if target.measuredSizeIncludesScrollbars=true, otherwise
+     *  it's just the preferred size of the viewport.
      * 
      *  This becomes the ScrollerSkin's measuredWidth,Height.
      *    
-     *  The ScrollerSkin's minimum size is only big enough to 
-     *  acccomodate the visible scrollbars.
-     * 
      *  The viewport does not contribute to the minimum size unless its
      *  explicit size has been set.
      */
     override public function measure():void
     {
-        var scroller:Scroller = getScroller();
+        const scroller:Scroller = getScroller();
         if (!scroller) 
             return;
             
-        var minViewportInset:Number = scroller.minViewportInset;
+        const minViewportInset:Number = scroller.minViewportInset;
+        const measuredSizeIncludesScrollBars:Boolean = scroller.measuredSizeIncludesScrollBars;
+
         var measuredW:Number = minViewportInset;
         var measuredH:Number = minViewportInset;
         
-        var hsb:ScrollBar = scroller.horizontalScrollBar;
+        const hsb:ScrollBar = scroller.horizontalScrollBar;
         var showHSB:Boolean = false;
         var hAuto:Boolean = false;
-        switch(scroller.getStyle("horizontalScrollPolicy")) 
-        {
-            case ScrollPolicy.ON: 
-                if (hsb) showHSB = true; 
-                break;
-            case ScrollPolicy.AUTO: 
-                if (hsb) showHSB = hsb.visible;
-                hAuto = true;
-                break;
-        } 
-
-        var vsb:ScrollBar = scroller.verticalScrollBar;
+        if (measuredSizeIncludesScrollBars)
+            switch(scroller.getStyle("horizontalScrollPolicy")) 
+            {
+                case ScrollPolicy.ON: 
+                    if (hsb) showHSB = true; 
+                    break;
+                case ScrollPolicy.AUTO: 
+                    if (hsb) showHSB = hsb.visible;
+                    hAuto = true;
+                    break;
+            } 
+
+        const vsb:ScrollBar = scroller.verticalScrollBar;
         var showVSB:Boolean = false;
         var vAuto:Boolean = false;
-        switch(scroller.getStyle("verticalScrollPolicy")) 
-        {
-           case ScrollPolicy.ON: 
-                if (vsb) showVSB = true; 
-                break;
-            case ScrollPolicy.AUTO: 
-                if (vsb) showVSB = vsb.visible;
-                vAuto = true;
-                break;
-        }
+        if (measuredSizeIncludesScrollBars)
+            switch(scroller.getStyle("verticalScrollPolicy")) 
+            {
+               case ScrollPolicy.ON: 
+                    if (vsb) showVSB = true; 
+                    break;
+                case ScrollPolicy.AUTO: 
+                    if (vsb) showVSB = vsb.visible;
+                    vAuto = true;
+                    break;
+            }
         
         measuredH += (showHSB) ? hsbRequiredHeight() : minViewportInset;
         measuredW += (showVSB) ? vsbRequiredWidth() : minViewportInset;

{
import flash.geom.Point;

import mx.core.IInvalidating;
import mx.core.IUIComponent;
import mx.core.ScrollPolicy;
import mx.utils.MatrixUtil;

        g.measuredMinWidth = Math.ceil(minW); 
        g.measuredMinHeight = Math.ceil(minH);
    }

    /** 
     *  @private
     *  Arrange the viewport and scrollbars conventionally within
