 	/**
 	 * This object defines the data bounds of a visualization, either directly with
 	 * absolute coordinates or indirectly with center coordinates and a scale value.
+	 * Screen coordinates are never directly specified in the session state.
 	 * 
 	 * @author adufilie
 	 */

						if (state.hasOwnProperty(name) && _dataBounds[name] != state[name])
						{
							_dataBounds[name] = state[name];
							_cc.triggerCallbacks();
						}
					}
				}
			}
			
			_cc.resumeCallbacks();
		}
		
		public function getDataBounds(outputDataBounds:IBounds2D):void
		{
			outputDataBounds.copyFrom(_dataBounds);
		}
		
		public function getScreenBounds(outputScreenBounds:IBounds2D):void
		{
			outputScreenBounds.copyFrom(_screenBounds);

				var usedCenterCoords:Boolean = false;
				if (state.hasOwnProperty("xCenter"))
				{
					if (MathLib.roundSignificant(_dataBounds.getXCenter()) != state.xCenter)
					{
						_dataBounds.setXCenter(state.xCenter);
						cc.triggerCallbacks();
					}
					usedCenterCoords = true;
				}
				if (state.hasOwnProperty("yCenter"))
				{
					if (MathLib.roundSignificant(_dataBounds.getYCenter()) != state.yCenter)
					{
						_dataBounds.setYCenter(state.yCenter);
						cc.triggerCallbacks();
					}
					usedCenterCoords = true;
				}
				if (state.hasOwnProperty("areaPerPixel"))
				{
					if (MathLib.roundSignificant(_dataBounds.getArea() / _screenBounds.getArea()) != state.areaPerPixel)
					{
						var scale:Number = Math.sqrt(state.areaPerPixel);
						_dataBounds.centeredResize(_screenBounds.getXCoverage() * scale, _screenBounds.getYCoverage() * scale);
						cc.triggerCallbacks();
					}
					usedCenterCoords = true;
				}
