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

				_nodeToId[node] = nodeId;
				_idToNode[nodeId] = node;
				_transforms[nodeId] = node.transform;
				
				if (oldNodeId >= 0 && oldNodeId < oldLocalToWorldTransforms.length)
				{

	
	import aerys.minko.ns.minko_math;
	import aerys.minko.render.Viewport;
	import aerys.minko.scene.node.AbstractSceneNode;
	import aerys.minko.scene.node.Group;
	import aerys.minko.scene.node.ISceneNode;
	import aerys.minko.scene.node.Scene;
