 					_distance * Math.sin(_theta) * Math.sin(_phi) + _lookAt.z
 				);
 				
-				TMP_MATRIX.lookAt(_position, _lookAt, _up).invert();
+				TMP_MATRIX.lookAt(_lookAt, _position, _up);
 				
 				var numTargets : uint = this.numTargets;
 				for (var targetId : uint = 0; targetId < numTargets; ++targetId)

			return _phiStep;
		}
		
		public function set phiStep(v : Number)	: void
		{
			_phiStep = v;
		}
		
		public function ArcBallController()

		{
			return _minDistance;
		}
		public function set minDistance(value : Number)	: void
		{
			_minDistance = value;
		}
		
		public function get maxDistance() : Number
		{
			return _maxDistance;
		}
		public function set maxDistance(value : Number)	: void
		{
			_maxDistance = value;
		}
		
		public function get distanceStep() : Number
		{
			return _distanceStep;
		}
		public function set distanceStep(value : Number) : void
		{
			_distanceStep = value;
		}
		
		public function get thetaStep() : Number
		{
			return _thetaStep;
		}
		public function set thetaStep(value : Number) : void
		{
			_thetaStep = value;
		}
		
		public function get phiStep() : Number
