         
         if (useComputedMatrix && computedMatrixProperty == null)
             computedMatrixProperty = new QName(mx_internal, "computedMatrix");
+        
+        if ($transformProperty == null)
+            $transformProperty = new QName(mx_internal, "$transform");
         
         while (displayObject && displayObject.transform.matrix && (!excludingRootSprite || displayObject != root))
         {            

            // definition for UIComponent
            if (!usesMarshalling && ApplicationDomain.currentDomain.hasDefinition("mx.core.UIComponent"))
                uiComponentClass = Class(ApplicationDomain.currentDomain.getDefinition("mx.core.UIComponent"));
        }
        
        // Note, root will be "null" if the displayObject is off the display list. In particular,

                    // Get the class definition for UIComponent in the current ApplicationDomain
                    if (appDomain && appDomain.hasDefinition("mx.core.UIComponent"))
                        uiComponentClass = Class(appDomain.getDefinition("mx.core.UIComponent"));
                    // same thing for UIMovieClip
                    if (appDomain && appDomain.hasDefinition("mx.flash.UIMovieClip"))
                        uiMovieClipClass = Class(appDomain.getDefinition("mx.flash.UIMovieClip"));
                    
                    lastModuleFactory = moduleFactory;
                }
            }
            
            var isUIComponent:Boolean = uiComponentClass && displayObject is uiComponentClass;
            var isUIMovieClip:Boolean = uiMovieClipClass && displayObject is uiMovieClipClass;
            
            if (useComputedMatrix && isUIComponent)
                m.concat(displayObject[computedMatrixProperty]);
            else if (isUIMovieClip)
                m.concat(displayObject[$transformProperty].matrix);
            else
                m.concat(displayObject.transform.matrix);
            
