 					_phi = Math.PI - EPSILON;
 				
 				_position.set(
-					_distance * Math.cos(_theta) * Math.sin(_phi) + _lookAt.x,
-					_distance * Math.cos(_phi) + _lookAt.y,
-					_distance * Math.sin(_theta) * Math.sin(_phi) + _lookAt.z
+					_lookAt.x + _distance * Math.cos(_theta) * Math.sin(_phi),
+					_lookAt.y + _distance * Math.cos(_phi),
+					_lookAt.z + _distance * Math.sin(_theta) * Math.sin(_phi)
 				);
 				
 				TMP_MATRIX.lookAt(_lookAt, _position, _up);

			// compute position
			if (e.buttonDown)
			{
				_theta	+= (_mousePosition.x - e.stageX) / 100.0;
				_phi	+= (_mousePosition.y - e.stageY) / 100.0;
				
				_update = true;
			}

			_distanceStep = value;
		}
		
		/**
		 * Horizontal angular step applied to the camera when the mouse is moved in radian/pixel
		 */		
		public function get thetaStep() : Number
		{
			return _thetaStep;
