         
         if (layoutDirection == LayoutDirection.RTL)
             regPoint.x += popUpBounds.width;
-        return MatrixUtil.getConcatenatedComputedMatrix(this).transformPoint(regPoint);
+        return MatrixUtil.getConcatenatedComputedMatrix(this, true /*excludingRootSprite*/).transformPoint(regPoint);
     }
     
     //--------------------------------------------------------------------------

    protected function calculatePopUpPosition():Point
    {
        // This implementation doesn't handle rotation
        var matrix:Matrix = MatrixUtil.getConcatenatedMatrix(this);
             
        var regPoint:Point = new Point();
        

        }
        
        var popUpAsDisplayObject:DisplayObject = popUp as DisplayObject;
        
        var topLeft:Point = registrationPoint.clone();
        var size:Point = MatrixUtil.transformBounds(popUpAsDisplayObject.width, popUpAsDisplayObject.height, matrix, topLeft);
        bounds.left = topLeft.x;
        bounds.top = topLeft.y;
        bounds.width = size.x;
        bounds.height = size.y;
    }
    
    /**
