diff --git a/src/OpenGL/common/Image.cpp b/src/OpenGL/common/Image.cpp
index cb8c76d..abdd9d4 100644
--- a/src/OpenGL/common/Image.cpp
+++ b/src/OpenGL/common/Image.cpp
@@ -650,6 +650,7 @@
 				return sw::FORMAT_G32R32F;
 			case GL_RGB:
 			case GL_RGB32F:
+				return sw::FORMAT_X32B32G32R32F;
 			case GL_RGBA:
 			case GL_RGBA32F:
 				return sw::FORMAT_A32B32G32R32F;
diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp
index f4c9a76..87e60f4 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.cpp
+++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -511,6 +511,7 @@
 		case sw::FORMAT_X16B16G16R16UI:
 		case sw::FORMAT_X32B32G32R32I:
 		case sw::FORMAT_X32B32G32R32UI:return GL_RGB_INTEGER;
+		case sw::FORMAT_X32B32G32R32F:
 		case sw::FORMAT_B16G16R16F:
 		case sw::FORMAT_X8B8G8R8I_SNORM:
 		case sw::FORMAT_X8B8G8R8:
@@ -559,6 +560,7 @@
 		case sw::FORMAT_R32F:
 		case sw::FORMAT_G32R32F:
 		case sw::FORMAT_B32G32R32F:
+		case sw::FORMAT_X32B32G32R32F:
 		case sw::FORMAT_A32B32G32R32F: return GL_FLOAT;
 		case sw::FORMAT_R8I_SNORM:
 		case sw::FORMAT_G8R8I_SNORM:
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index 9288e2a..79f8f32 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -1590,6 +1590,7 @@
 		case sw::FORMAT_R32F:
 		case sw::FORMAT_G32R32F:
 		case sw::FORMAT_B32G32R32F:
+		case sw::FORMAT_X32B32G32R32F:
 		case sw::FORMAT_A32B32G32R32F:
 		case sw::FORMAT_R32I:
 		case sw::FORMAT_G32R32I:
@@ -1646,6 +1647,7 @@
 			return 16;
 		case sw::FORMAT_G32R32F:
 		case sw::FORMAT_B32G32R32F:
+		case sw::FORMAT_X32B32G32R32F:
 		case sw::FORMAT_A32B32G32R32F:
 		case sw::FORMAT_G32R32I:
 		case sw::FORMAT_X32B32G32R32I:
@@ -1693,6 +1695,7 @@
 		case sw::FORMAT_A16B16G16R16UI:
 			return 16;
 		case sw::FORMAT_B32G32R32F:
+		case sw::FORMAT_X32B32G32R32F:
 		case sw::FORMAT_A32B32G32R32F:
 		case sw::FORMAT_X32B32G32R32I:
 		case sw::FORMAT_A32B32G32R32I:
@@ -1818,6 +1821,7 @@
 			case sw::FORMAT_R32F:
 			case sw::FORMAT_G32R32F:
 			case sw::FORMAT_B32G32R32F:
+			case sw::FORMAT_X32B32G32R32F:
 			case sw::FORMAT_A32B32G32R32F:
 				return GL_FLOAT;
 			case sw::FORMAT_R8:
diff --git a/src/Renderer/Blitter.cpp b/src/Renderer/Blitter.cpp
index 19fcd9c..ee3fc8f 100644
--- a/src/Renderer/Blitter.cpp
+++ b/src/Renderer/Blitter.cpp
@@ -271,6 +271,9 @@
 		case FORMAT_A32B32G32R32F:
 			c = *Pointer<Float4>(element);
 			break;
+		case FORMAT_X32B32G32R32F:
+		case FORMAT_B32G32R32F:
+			c.z = *Pointer<Float>(element + 8);
 		case FORMAT_G32R32F:
 			c.x = *Pointer<Float>(element + 0);
 			c.y = *Pointer<Float>(element + 4);
@@ -395,6 +398,13 @@
 				if(writeA) { *Pointer<Float>(element + 12) = c.w; }
 			}
 			break;
+		case FORMAT_X32B32G32R32F:
+			if(writeA) { *Pointer<Float>(element + 12) = 1.0f; }
+		case FORMAT_B32G32R32F:
+			if(writeR) { *Pointer<Float>(element) = c.x; }
+			if(writeG) { *Pointer<Float>(element + 4) = c.y; }
+			if(writeB) { *Pointer<Float>(element + 8) = c.z; }
+			break;
 		case FORMAT_G32R32F:
 			if(writeR && writeG)
 			{
@@ -903,6 +913,8 @@
 		case FORMAT_A32B32G32R32I:
 		case FORMAT_A32B32G32R32UI:
 		case FORMAT_A32B32G32R32F:
+		case FORMAT_X32B32G32R32F:
+		case FORMAT_B32G32R32F:
 		case FORMAT_G32R32F:
 		case FORMAT_R32F:
 			scale = vector(1.0f, 1.0f, 1.0f, 1.0f);
diff --git a/src/Renderer/Surface.cpp b/src/Renderer/Surface.cpp
index 334844b..8e5f4fb 100644
--- a/src/Renderer/Surface.cpp
+++ b/src/Renderer/Surface.cpp
@@ -305,6 +305,8 @@
 			((float*)element)[0] = color.r;
 			((float*)element)[1] = color.g;
 			break;
+		case FORMAT_X32B32G32R32F:
+			((float*)element)[3] = 1.0f;
 		case FORMAT_B32G32R32F:
 			((float*)element)[0] = color.r;
 			((float*)element)[1] = color.g;
@@ -946,6 +948,7 @@
 			r = ((float*)element)[0];
 			g = ((float*)element)[1];
 			break;
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_B32G32R32F:
 			r = ((float*)element)[0];
 			g = ((float*)element)[1];
@@ -1569,6 +1572,7 @@
 		case FORMAT_R32F:				return 4;
 		case FORMAT_G32R32F:			return 8;
 		case FORMAT_B32G32R32F:			return 12;
+		case FORMAT_X32B32G32R32F:		return 16;
 		case FORMAT_A32B32G32R32F:		return 16;
 		// Depth/stencil formats
 		case FORMAT_D16:				return 2;
@@ -2690,6 +2694,7 @@
 			return false;
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_D32F:
 		case FORMAT_D32F_COMPLEMENTARY:
@@ -2774,6 +2779,7 @@
 		case FORMAT_G8R8I_SNORM:
 			return component >= 2;
 		case FORMAT_A16W16V16U16:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_X8B8G8R8I:
 		case FORMAT_X16B16G16R16I:
 		case FORMAT_X32B32G32R32I:
@@ -2968,6 +2974,7 @@
 		case FORMAT_Q16W16V16U16:   return 4;
 		case FORMAT_R32F:           return 1;
 		case FORMAT_G32R32F:        return 2;
+		case FORMAT_X32B32G32R32F:  return 3;
 		case FORMAT_A32B32G32R32F:  return 4;
 		case FORMAT_D32F:           return 1;
 		case FORMAT_D32F_LOCKABLE:  return 1;
@@ -3591,21 +3598,22 @@
 		case FORMAT_A16F:			return FORMAT_A32B32G32R32F;
 		case FORMAT_R16F:			return FORMAT_R32F;
 		case FORMAT_G16R16F:		return FORMAT_G32R32F;
-		case FORMAT_B16G16R16F:     return FORMAT_A32B32G32R32F;
+		case FORMAT_B16G16R16F:     return FORMAT_X32B32G32R32F;
 		case FORMAT_A16B16G16R16F:	return FORMAT_A32B32G32R32F;
 		case FORMAT_A32F:			return FORMAT_A32B32G32R32F;
 		case FORMAT_R32F:			return FORMAT_R32F;
 		case FORMAT_G32R32F:		return FORMAT_G32R32F;
-		case FORMAT_B32G32R32F:     return FORMAT_A32B32G32R32F;
+		case FORMAT_B32G32R32F:     return FORMAT_X32B32G32R32F;
+		case FORMAT_X32B32G32R32F:  return FORMAT_X32B32G32R32F;
 		case FORMAT_A32B32G32R32F:	return FORMAT_A32B32G32R32F;
 		// Luminance formats
 		case FORMAT_L8:				return FORMAT_L8;
 		case FORMAT_A4L4:			return FORMAT_A8L8;
 		case FORMAT_L16:			return FORMAT_L16;
 		case FORMAT_A8L8:			return FORMAT_A8L8;
-		case FORMAT_L16F:           return FORMAT_A32B32G32R32F;
+		case FORMAT_L16F:           return FORMAT_X32B32G32R32F;
 		case FORMAT_A16L16F:        return FORMAT_A32B32G32R32F;
-		case FORMAT_L32F:           return FORMAT_A32B32G32R32F;
+		case FORMAT_L32F:           return FORMAT_X32B32G32R32F;
 		case FORMAT_A32L32F:        return FORMAT_A32B32G32R32F;
 		// Depth/stencil formats
 		case FORMAT_D16:
@@ -5142,7 +5150,7 @@
 				else ASSERT(false);
 			}
 		}
-		else if(internal.format == FORMAT_A32B32G32R32F)
+		else if(internal.format == FORMAT_A32B32G32R32F || internal.format == FORMAT_X32B32G32R32F)
 		{
 			if(CPUID::supportsSSE())
 			{
diff --git a/src/Renderer/Surface.hpp b/src/Renderer/Surface.hpp
index 2d9154d..9e09753 100644
--- a/src/Renderer/Surface.hpp
+++ b/src/Renderer/Surface.hpp
@@ -157,6 +157,7 @@
 		FORMAT_R32F,
 		FORMAT_G32R32F,
 		FORMAT_B32G32R32F,
+		FORMAT_X32B32G32R32F,
 		FORMAT_A32B32G32R32F,
 		// Bump map formats
 		FORMAT_V8U8,
diff --git a/src/Shader/PixelPipeline.cpp b/src/Shader/PixelPipeline.cpp
index 99f91e7..8adeed8 100644
--- a/src/Shader/PixelPipeline.cpp
+++ b/src/Shader/PixelPipeline.cpp
@@ -351,6 +351,7 @@
 			break;
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 			convertSigned12(oC, current);
 			PixelRoutine::fogBlend(oC, fog);
diff --git a/src/Shader/PixelProgram.cpp b/src/Shader/PixelProgram.cpp
index b005863..b0e47fd 100644
--- a/src/Shader/PixelProgram.cpp
+++ b/src/Shader/PixelProgram.cpp
@@ -615,6 +615,7 @@
 				break;
 			case FORMAT_R32F:
 			case FORMAT_G32R32F:
+			case FORMAT_X32B32G32R32F:
 			case FORMAT_A32B32G32R32F:
 			case FORMAT_R32I:
 			case FORMAT_G32R32I:
@@ -727,6 +728,7 @@
 				break;
 			case FORMAT_R32F:
 			case FORMAT_G32R32F:
+			case FORMAT_X32B32G32R32F:
 			case FORMAT_A32B32G32R32F:
 			case FORMAT_R32I:
 			case FORMAT_G32R32I:
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index 2b5f087..ca38074 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -2006,6 +2006,7 @@
 			pixel.y = pixel.z;
 			pixel.z = pixel.w = one;
 			break;
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A32B32G32R32I:
 		case FORMAT_A32B32G32R32UI:
@@ -2016,6 +2017,10 @@
 			pixel.z = *Pointer<Float4>(buffer + 16 * x, 16);
 			pixel.w = *Pointer<Float4>(buffer + 16 * x + 16, 16);
 			transpose4x4(pixel.x, pixel.y, pixel.z, pixel.w);
+			if(state.targetFormat[index] == FORMAT_X32B32G32R32F)
+			{
+				pixel.w = Float4(1.0f);
+			}
 			break;
 		default:
 			ASSERT(false);
@@ -2154,6 +2159,7 @@
 			oC.z = UnpackHigh(oC.z, oC.y);
 			oC.y = oC.z;
 			break;
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A32B32G32R32I:
 		case FORMAT_A32B32G32R32UI:
@@ -2257,6 +2263,7 @@
 			oC.y = As<Float4>(As<Int4>(oC.y) | As<Int4>(value));
 			*Pointer<Float4>(buffer) = oC.y;
 			break;
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A32B32G32R32I:
 		case FORMAT_A32B32G32R32UI:
@@ -2316,7 +2323,7 @@
 			}
 
 			{
-				value = *Pointer<Float4>(buffer + 16, 16);
+				value = (state.targetFormat[index] == FORMAT_X32B32G32R32F) ? Float4(1.0f) : *Pointer<Float4>(buffer + 16, 16);
 
 				if(rgbaWriteMask != 0x0000000F)
 				{
diff --git a/src/Shader/SamplerCore.cpp b/src/Shader/SamplerCore.cpp
index 8128617..4f8943a 100644
--- a/src/Shader/SamplerCore.cpp
+++ b/src/Shader/SamplerCore.cpp
@@ -261,6 +261,7 @@
 					c.y = Short4(0x1000, 0x1000, 0x1000, 0x1000);
 				case FORMAT_G32R32F:
 					c.z = Short4(0x1000, 0x1000, 0x1000, 0x1000);
+				case FORMAT_X32B32G32R32F:
 					c.w = Short4(0x1000, 0x1000, 0x1000, 0x1000);
 				case FORMAT_A32B32G32R32F:
 					break;
@@ -520,6 +521,7 @@
 					c.y = Float4(1.0f);
 				case FORMAT_G32R32F:
 					c.z = Float4(1.0f);
+				case FORMAT_X32B32G32R32F:
 					c.w = Float4(1.0f);
 				case FORMAT_A32B32G32R32F:
 					break;
@@ -2183,6 +2185,7 @@
 		case FORMAT_X8L8V8U8:
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A8:
 		case FORMAT_R8:
@@ -2249,6 +2252,7 @@
 		case FORMAT_R5G6B5:
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_D32F:
 		case FORMAT_D32F_LOCKABLE:
@@ -2322,6 +2326,7 @@
 		case FORMAT_X8L8V8U8:
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A8:
 		case FORMAT_R8:
@@ -2396,6 +2401,7 @@
 		case FORMAT_X8L8V8U8:
 		case FORMAT_R32F:
 		case FORMAT_G32R32F:
+		case FORMAT_X32B32G32R32F:
 		case FORMAT_A32B32G32R32F:
 		case FORMAT_A8:
 		case FORMAT_R8:
@@ -2462,6 +2468,7 @@
 		case FORMAT_X8L8V8U8:       return false;
 		case FORMAT_R32F:           return component < 1;
 		case FORMAT_G32R32F:        return component < 2;
+		case FORMAT_X32B32G32R32F:  return component < 3;
 		case FORMAT_A32B32G32R32F:  return component < 3;
 		case FORMAT_A8:             return false;
 		case FORMAT_R8:             return component < 1;
