             }
         }
         
-        private function updateAncestorsAndSelfLocalToWorld(nodeId : int) : void
+        private function updateAncestorsAndSelfLocalToWorld(nodeId : uint) : void
         {
             var dirtyRoot : int = -1;
-            
-            while (nodeId >= 0)
-            {
-                if ((_transforms[nodeId] as Matrix4x4)._hasChanged
+            var tmpNodeId : int = nodeId;
+            
+            while (tmpNodeId >= 0)
+            {
+                if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged
                     || !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
-                    dirtyRoot = nodeId;
-                
-                nodeId = _parentId[nodeId];
+                    dirtyRoot = tmpNodeId;
+                
+                tmpNodeId = _parentId[tmpNodeId];
             }
             
             if (dirtyRoot >= 0)
-                updateLocalToWorld(dirtyRoot, true);
+                updateLocalToWorld(dirtyRoot, nodeId);
         }
         
         private function targetAddedHandler(ctrl	: TransformController,

            targetRemoved.add(targetRemovedHandler);
        }
        
        private function renderingBeginHandler(scene			: Scene,
                                               viewport		: Viewport,
                                               destination	: BitmapData,
                                               time			: Number) : void

            }
        }
        
        private function updateLocalToWorld(nodeId : uint = 0, targetNodeId : int = -1) : void
        {
            var numNodes 	: uint 	= _transforms.length;
            var subtreeMax  : uint  = nodeId;
            
            updateRootLocalToWorld(nodeId);
            
            if (nodeId == targetNodeId)
                return;

            while (nodeId < numNodes)
            {
