 			return _computedMatrix3D;
 	
 	
-		if(!offsets && !mirror)
+		if(!offsets && !mirror && stretchX == 1 && stretchY == 1)
 		{
 			return layout.matrix3D;
 		}

            y += offsets.y;
        }
        
        build2DMatrix(m, tx, ty, sx, sy, rz, x, y);
        
		_flags |= COMPUTED_MATRIX_VALID;

        invalidate();
    }
	
    //----------------------------------
    //  stretchX
    //----------------------------------

    private var _stretchX:Number = 1;
    
    /**
     *  The stretchY is the horizontal component of the stretch scale factor which
     *  is applied before any other transformation property.
     *  @default 1
     */
    public function get stretchX():Number
    {
        return _stretchX;
    }
    
    /**
     *  @private
     */
    public function set stretchX(value:Number):void
    {
        if (value == _stretchX)
            return;         
        _stretchX = value;
        invalidate();
    }

    //----------------------------------
    //  stretchY
    //----------------------------------

    private var _stretchY:Number = 1;
    
    /**
     *  The stretchY is the vertical component of the stretch scale factor which
     *  is applied before any other transformation property.
     *  @default 1
     */
    public function get stretchY():Number
    {
        return _stretchY;
    }
    
    /**
     *  @private
     */
    public function set stretchY(value:Number):void
    {
        if (value == _stretchY)
            return;         
        _stretchY = value;
        invalidate();
    }

	//------------------------------------------------------------------------------
	
	/**
