 		
 		private function removeMesh(mesh : Mesh) : void
 		{
-			mesh.bindings.removeCallback('effect', meshEffectChangedHandler);
+			var meshBindings : DataBindings = mesh.bindings;
+			
+			meshBindings.removeCallback('effect', meshEffectChangedHandler);
+			
+			delete _stashedPropertyChanges[meshBindings];
             
             mesh.computedVisibilityChanged.remove(meshVisibilityChangedHandler);
 			mesh.frameChanged.remove(meshFrameChangedHandler);

		{
			_passes						= [];
			_passesAreSorted			= true;
			
			_drawCallToPassInstance		= new Dictionary();
			_drawCallToMeshBindings		= new Dictionary();

		private static const TMP_MESHES 	: Vector.<ISceneNode> 	= new <ISceneNode>[];
		private static const TMP_NUMBERS	: Vector.<Number>		= new <Number>[];
		
		private var _scene						: Scene;
		
		private var _numTriangles				: uint;
		
		private var _stashedPropertyChanges		: Dictionary;
		
		private var _passes						: Array;
		private var _passesAreSorted			: Boolean;
		
		private var _drawCallToPassInstance		: Dictionary;
		private var _passInstanceToDrawCalls	: Dictionary;
		
		private var _meshToDrawCalls			: Dictionary;
		private var _drawCallToMeshBindings		: Dictionary;
		
		private var _postProcessingBackBuffer	: RenderTarget;
		private var _postProcessingEffect		: Effect;
		private var _postProcessingScene		: Scene;
		private var _postProcessingProperties	: DataProvider;
		
		private var _lastViewportWidth			: Number;
		private var _lastViewportHeight			: Number;
		
		/**
		 * Index meshes by their own databinding.
