diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index f6d714f..8d50178 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -16,6 +16,7 @@
 
 #include "Pipeline/ShaderCore.hpp"
 #include "Reactor/Reactor.hpp"
+#include "System/Half.hpp"
 #include "System/Memory.hpp"
 #include "Vulkan/VkDebug.hpp"
 #include "Vulkan/VkImage.hpp"
diff --git a/src/Device/QuadRasterizer.cpp b/src/Device/QuadRasterizer.cpp
index 65470af..ce4dbf1 100644
--- a/src/Device/QuadRasterizer.cpp
+++ b/src/Device/QuadRasterizer.cpp
@@ -198,18 +198,18 @@
 			{
 				if(state.colorWriteActive(index))
 				{
-					cBuffer[index] += *Pointer<Int>(data + OFFSET(DrawData,colorPitchB[index])) << (1 + sw::log2(clusterCount));   // FIXME: Precompute
+					cBuffer[index] += *Pointer<Int>(data + OFFSET(DrawData,colorPitchB[index])) << (1 + log2i(clusterCount));   // FIXME: Precompute
 				}
 			}
 
 			if(state.depthTestActive)
 			{
-				zBuffer += *Pointer<Int>(data + OFFSET(DrawData,depthPitchB)) << (1 + sw::log2(clusterCount));   // FIXME: Precompute
+				zBuffer += *Pointer<Int>(data + OFFSET(DrawData,depthPitchB)) << (1 + log2i(clusterCount));   // FIXME: Precompute
 			}
 
 			if(state.stencilActive)
 			{
-				sBuffer += *Pointer<Int>(data + OFFSET(DrawData,stencilPitchB)) << (1 + sw::log2(clusterCount));   // FIXME: Precompute
+				sBuffer += *Pointer<Int>(data + OFFSET(DrawData,stencilPitchB)) << (1 + log2i(clusterCount));   // FIXME: Precompute
 			}
 
 			y += 2 * clusterCount;
diff --git a/src/System/Half.hpp b/src/System/Half.hpp
index a20629a..ec5fba9 100644
--- a/src/System/Half.hpp
+++ b/src/System/Half.hpp
@@ -77,19 +77,13 @@
 			const float blue_c = std::max<float>(0, std::min(g_sharedexp_max, rgb[2]));
 
 			const float max_c = std::max<float>(std::max<float>(red_c, green_c), blue_c);
-			const float exp_p =
-				std::max<float>(-g_sharedexp_bias - 1, floor(log(max_c))) + 1 + g_sharedexp_bias;
-			const int max_s = static_cast<int>(
-				floor((max_c / (pow(2.0f, exp_p - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-			const int exp_s =
-				static_cast<int>((max_s < pow(2.0f, g_sharedexp_mantissabits)) ? exp_p : exp_p + 1);
+			const float exp_p = std::max<float>(-g_sharedexp_bias - 1, floor(log2(max_c))) + 1 + g_sharedexp_bias;
+			const int max_s = static_cast<int>(floor((max_c / exp2(exp_p - g_sharedexp_bias - g_sharedexp_mantissabits)) + 0.5f));
+			const int exp_s = static_cast<int>((max_s < exp2(g_sharedexp_mantissabits)) ? exp_p : exp_p + 1);
 
-			R = static_cast<unsigned int>(
-				floor((red_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-			G = static_cast<unsigned int>(
-				floor((green_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
-			B = static_cast<unsigned int>(
-				floor((blue_c / (pow(2.0f, exp_s - g_sharedexp_bias - g_sharedexp_mantissabits))) + 0.5f));
+			R = static_cast<unsigned int>(floor((red_c / exp2(exp_s - g_sharedexp_bias - g_sharedexp_mantissabits)) + 0.5f));
+			G = static_cast<unsigned int>(floor((green_c / exp2(exp_s - g_sharedexp_bias - g_sharedexp_mantissabits)) + 0.5f));
+			B = static_cast<unsigned int>(floor((blue_c / exp2(exp_s - g_sharedexp_bias - g_sharedexp_mantissabits)) + 0.5f));
 			E = exp_s;
 		}
 
diff --git a/src/System/Math.hpp b/src/System/Math.hpp
index 2e7f344..7bd3890 100644
--- a/src/System/Math.hpp
+++ b/src/System/Math.hpp
@@ -16,7 +16,6 @@
 #define sw_Math_hpp
 
 #include "Types.hpp"
-#include "Half.hpp"
 
 #include "Vulkan/VkDebug.hpp"
 
@@ -138,17 +137,7 @@
 	#define MAX(x, y) ((x) > (y) ? (x) : (y))
 	#define MIN(x, y) ((x) < (y) ? (x) : (y))
 
-	inline float exp2(float x)
-	{
-		return exp2f(x);
-	}
-
-	inline int exp2(int x)
-	{
-		return 1 << x;
-	}
-
-	inline unsigned long log2(int x)
+	inline unsigned long log2i(int x)
 	{
 		#if defined(_MSC_VER)
 			unsigned long y;
@@ -159,18 +148,6 @@
 		#endif
 	}
 
-	inline int ilog2(float x)
-	{
-		unsigned int y = *(unsigned int*)&x;
-
-		return ((y & 0x7F800000) >> 23) - 127;
-	}
-
-	inline float log2(float x)
-	{
-		return logf(x) * 1.44269504f;   // 1.0 / log[e](2)
-	}
-
 	inline bool isPow2(int x)
 	{
 		return (x & -x) == x;
