diff --git a/src/Pipeline/Constants.cpp b/src/Pipeline/Constants.cpp
index d5f2b25..1937e8b 100644
--- a/src/Pipeline/Constants.cpp
+++ b/src/Pipeline/Constants.cpp
@@ -304,26 +304,6 @@
 	memcpy(&this->Xf, &Xf, sizeof(Xf));
 	memcpy(&this->Yf, &Yf, sizeof(Yf));
 
-	static const float4 unscaleByte = { 1.0f / 0xFF, 1.0f / 0xFF, 1.0f / 0xFF, 1.0f / 0xFF };
-	static const float4 unscaleSByte = { 1.0f / 0x7F, 1.0f / 0x7F, 1.0f / 0x7F, 1.0f / 0x7F };
-	static const float4 unscaleShort = { 1.0f / 0x7FFF, 1.0f / 0x7FFF, 1.0f / 0x7FFF, 1.0f / 0x7FFF };
-	static const float4 unscaleUShort = { 1.0f / 0xFFFF, 1.0f / 0xFFFF, 1.0f / 0xFFFF, 1.0f / 0xFFFF };
-
-	// NOTE: Using "1.0f / 0x7FFFFFF" below results in a compiler error, e.g.:
-	// error: implicit conversion from 'int' to 'float' changes value from 2147483646 to 2147483648
-	static const float4 unscaleInt = { (float)(1.0 / 0x7FFFFFFF), (float)(1.0 / 0x7FFFFFFF), (float)(1.0 / 0x7FFFFFFF), (float)(1.0 / 0x7FFFFFFF) };
-	static const float4 unscaleUInt = { (float)(1.0 / 0xFFFFFFFF), (float)(1.0 / 0xFFFFFFFF), (float)(1.0 / 0xFFFFFFFF), (float)(1.0 / 0xFFFFFFFF) };
-
-	static const float4 unscaleFixed = { 1.0f / 0x00010000, 1.0f / 0x00010000, 1.0f / 0x00010000, 1.0f / 0x00010000 };
-
-	memcpy(&this->unscaleByte, &unscaleByte, sizeof(unscaleByte));
-	memcpy(&this->unscaleSByte, &unscaleSByte, sizeof(unscaleSByte));
-	memcpy(&this->unscaleShort, &unscaleShort, sizeof(unscaleShort));
-	memcpy(&this->unscaleUShort, &unscaleUShort, sizeof(unscaleUShort));
-	memcpy(&this->unscaleInt, &unscaleInt, sizeof(unscaleInt));
-	memcpy(&this->unscaleUInt, &unscaleUInt, sizeof(unscaleUInt));
-	memcpy(&this->unscaleFixed, &unscaleFixed, sizeof(unscaleFixed));
-
 	for(int i = 0; i <= 0xFFFF; i++)
 	{
 		half2float[i] = (float)reinterpret_cast<half &>(i);
diff --git a/src/Pipeline/Constants.hpp b/src/Pipeline/Constants.hpp
index 9fd0b88..a939a7c 100644
--- a/src/Pipeline/Constants.hpp
+++ b/src/Pipeline/Constants.hpp
@@ -136,14 +136,6 @@
 		sw::SampleLocationsY[3],
 	};
 
-	float4 unscaleByte;
-	float4 unscaleSByte;
-	float4 unscaleShort;
-	float4 unscaleUShort;
-	float4 unscaleInt;
-	float4 unscaleUInt;
-	float4 unscaleFixed;
-
 	float half2float[65536];
 };
 
diff --git a/src/Pipeline/VertexRoutine.cpp b/src/Pipeline/VertexRoutine.cpp
index 771dcd7..36ce92c 100644
--- a/src/Pipeline/VertexRoutine.cpp
+++ b/src/Pipeline/VertexRoutine.cpp
@@ -16,8 +16,8 @@
 
 #include "Constants.hpp"
 #include "SpirvShader.hpp"
-#include "Device/Renderer.hpp"
 #include "Device/Clipper.hpp"
+#include "Device/Renderer.hpp"
 #include "Device/Vertex.hpp"
 #include "System/Debug.hpp"
 #include "System/Half.hpp"
@@ -256,10 +256,10 @@
 
 		transpose4xN(v.x, v.y, v.z, v.w, componentCount);
 
-		if(componentCount >= 1) v.x *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleByte));
-		if(componentCount >= 2) v.y *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleByte));
-		if(componentCount >= 3) v.z *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleByte));
-		if(componentCount >= 4) v.w *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleByte));
+		if(componentCount >= 1) v.x *= (1.0f / 0xFF);
+		if(componentCount >= 2) v.y *= (1.0f / 0xFF);
+		if(componentCount >= 3) v.z *= (1.0f / 0xFF);
+		if(componentCount >= 4) v.w *= (1.0f / 0xFF);
 		break;
 	case VK_FORMAT_R8_UINT:
 	case VK_FORMAT_R8G8_UINT:
@@ -283,10 +283,10 @@
 
 		transpose4xN(v.x, v.y, v.z, v.w, componentCount);
 
-		if(componentCount >= 1) v.x = Max(v.x * *Pointer<Float4>(constants + OFFSET(Constants, unscaleSByte)), Float4(-1.0f));
-		if(componentCount >= 2) v.y = Max(v.y * *Pointer<Float4>(constants + OFFSET(Constants, unscaleSByte)), Float4(-1.0f));
-		if(componentCount >= 3) v.z = Max(v.z * *Pointer<Float4>(constants + OFFSET(Constants, unscaleSByte)), Float4(-1.0f));
-		if(componentCount >= 4) v.w = Max(v.w * *Pointer<Float4>(constants + OFFSET(Constants, unscaleSByte)), Float4(-1.0f));
+		if(componentCount >= 1) v.x = Max(v.x * (1.0f / 0x7F), Float4(-1.0f));
+		if(componentCount >= 2) v.y = Max(v.y * (1.0f / 0x7F), Float4(-1.0f));
+		if(componentCount >= 3) v.z = Max(v.z * (1.0f / 0x7F), Float4(-1.0f));
+		if(componentCount >= 4) v.w = Max(v.w * (1.0f / 0x7F), Float4(-1.0f));
 		break;
 	case VK_FORMAT_R8_USCALED:
 	case VK_FORMAT_R8G8_USCALED:
@@ -331,10 +331,10 @@
 
 		transpose4xN(v.x, v.y, v.z, v.w, componentCount);
 
-		if(componentCount >= 1) v.x *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleUShort));
-		if(componentCount >= 2) v.y *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleUShort));
-		if(componentCount >= 3) v.z *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleUShort));
-		if(componentCount >= 4) v.w *= *Pointer<Float4>(constants + OFFSET(Constants, unscaleUShort));
+		if(componentCount >= 1) v.x *= (1.0f / 0xFFFF);
+		if(componentCount >= 2) v.y *= (1.0f / 0xFFFF);
+		if(componentCount >= 3) v.z *= (1.0f / 0xFFFF);
+		if(componentCount >= 4) v.w *= (1.0f / 0xFFFF);
 		break;
 	case VK_FORMAT_R16_SNORM:
 	case VK_FORMAT_R16G16_SNORM:
@@ -346,10 +346,10 @@
 
 		transpose4xN(v.x, v.y, v.z, v.w, componentCount);
 
-		if(componentCount >= 1) v.x = Max(v.x * *Pointer<Float4>(constants + OFFSET(Constants, unscaleShort)), Float4(-1.0f));
-		if(componentCount >= 2) v.y = Max(v.y * *Pointer<Float4>(constants + OFFSET(Constants, unscaleShort)), Float4(-1.0f));
-		if(componentCount >= 3) v.z = Max(v.z * *Pointer<Float4>(constants + OFFSET(Constants, unscaleShort)), Float4(-1.0f));
-		if(componentCount >= 4) v.w = Max(v.w * *Pointer<Float4>(constants + OFFSET(Constants, unscaleShort)), Float4(-1.0f));
+		if(componentCount >= 1) v.x = Max(v.x * (1.0f / 0x7FFF), Float4(-1.0f));
+		if(componentCount >= 2) v.y = Max(v.y * (1.0f / 0x7FFF), Float4(-1.0f));
+		if(componentCount >= 3) v.z = Max(v.z * (1.0f / 0x7FFF), Float4(-1.0f));
+		if(componentCount >= 4) v.w = Max(v.w * (1.0f / 0x7FFF), Float4(-1.0f));
 		break;
 	case VK_FORMAT_R16_USCALED:
 	case VK_FORMAT_R16G16_USCALED:
