 			
 			while (tmpNodeId >= 0)
 			{
-				if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged
+				if ((_transforms[tmpNodeId] as Matrix4x4)._hasChanged 
+					|| (tmpNodeId != nodeId && _localToWorldTransforms[tmpNodeId]._hasChanged)
 					|| !(_flags[nodeId] & FLAG_INIT_LOCAL_TO_WORLD))
 					dirtyRoot = tmpNodeId;
 				

				
				var localToWorldTransformChanged : Signal = child.localToWorldTransformChanged;
				
				if (localToWorldTransformChanged.enabled)
					localToWorldTransformChanged.execute(child, childLocalToWorld);
				
				localToWorld = childLocalToWorld;

		
		private function updateLocalToWorldPath(path : Vector.<uint> = null) : void
		{
			var numNodes				: uint		= path.length;
			var nodeId					: uint		= path[uint(numNodes - 1)];
			var localToWorld 			: Matrix4x4	= _localToWorldTransforms[nodeId];
			var prevChildLocalToWorld	: Matrix4x4	= new Matrix4x4();
			
			updateRootLocalToWorld(nodeId);
			
