 		 */
 		public function updateFromMatrix(matrix : Matrix4x4) : void
 		{
+			matrix = matrix.clone().transpose();
+			
 			var data	: Vector.<Number>	= matrix.getRawData(TMP_NUMBERS_1);
 
+			(_planes[LEFT] as Plane).set(
+				data[12] + data[0],
+				data[13] + data[1],
+				data[14] + data[2],
+				data[15] + data[3]
+			).normalize();
+			
+			(_planes[TOP] as Plane).set(
+				data[12] - data[4],
+				data[13] - data[5],
+				data[14] - data[6],
+				data[15] - data[7]
+			).normalize();
+			
 			(_planes[RIGHT] as Plane).set(
-				data[3] - data[0],
-				data[7] - data[4],
-				data[11] - data[8],
-				data[12] - data[15]
+				data[12] - data[0],
+				data[13] - data[1],
+				data[14] - data[2],
+				data[15] - data[3]
 			).normalize();
-
-			(_planes[LEFT] as Plane).set(
-				data[3] + data[0],
-				data[7] + data[4],
-				data[11] + data[8],
-				-data[15] - data[12]
+			
+			(_planes[BOTTOM] as Plane).set(
+				data[12] + data[4],
+				data[13] + data[5],
+				data[14] + data[6],
+				data[15] + data[7]
 			).normalize();
-
-			(_planes[TOP] as Plane).set(
-				data[3] - data[1],
-				data[7] - data[5],
-				data[11] - data[9],
-				-data[13] - data[15]
+			
+			(_planes[NEAR] as Plane).set(
+				data[8],
+				data[9],
+				data[10],
+				data[11]
 			).normalize();
-
-			(_planes[BOTTOM] as Plane).set(
-				data[3] + data[1],
-				data[7] + data[5],
-				data[11] + data[9],
-				-data[15] - data[13]
-			).normalize();
-
-			(_planes[NEAR] as Plane).set(
-				data[2],
-				data[6],
-				data[10],
-				-data[14]
-			).normalize();
-
+			
 			(_planes[FAR] as Plane).set(
-				data[3] - data[2],
-				data[7] - data[6],
-				data[11] - data[10],
-				data[14] - data[15]
+				data[12] - data[8],
+				data[13] - data[9],
+				data[14] - data[10],
+				data[15] - data[11] 
 			).normalize();
 			
 			_points	= null;

			var radius	: Number	= sphere.radius;
			var result	: int		= 0;
			var p 		: Plane		= null;
			var d 		: Number	= 0.;

			if (!culling)
				return INSIDE;

			return _points;
		}
		
		/**
		 * Update the frustum planes according to the specified project matrix.
		 *
