diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index 1f820e9..a860aae 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -154,22 +154,20 @@
 	}
 }
 
-bool Blitter::fastClear(void *clearValue, vk::Format clearFormat, vk::Image *dest, const vk::Format &viewFormat, const VkImageSubresourceRange &subresourceRange, const VkRect2D *renderArea)
+bool Blitter::fastClear(void *pixel, vk::Format format, vk::Image *dest, const vk::Format &viewFormat, const VkImageSubresourceRange &subresourceRange, const VkRect2D *renderArea)
 {
-	if(clearFormat != VK_FORMAT_R32G32B32A32_SFLOAT &&
-	   clearFormat != VK_FORMAT_D32_SFLOAT &&
-	   clearFormat != VK_FORMAT_S8_UINT)
+	if(format != VK_FORMAT_R32G32B32A32_SFLOAT)
 	{
 		return false;
 	}
 
-	float *color = reinterpret_cast<float *>(clearValue);
+	float *color = (float *)pixel;
 	float r = color[0];
 	float g = color[1];
 	float b = color[2];
 	float a = color[3];
 
-	uint32_t packed = 0;
+	uint32_t packed;
 
 	VkImageAspectFlagBits aspect = static_cast<VkImageAspectFlagBits>(subresourceRange.aspectMask);
 	switch(viewFormat)
@@ -204,14 +202,6 @@
 		case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
 			packed = RGB9E5(color);
 			break;
-		case VK_FORMAT_D32_SFLOAT:
-			ASSERT(clearFormat == VK_FORMAT_D32_SFLOAT);
-			packed = *reinterpret_cast<uint32_t *>(clearValue);  // float reinterpreted as uint32
-			break;
-		case VK_FORMAT_S8_UINT:
-			ASSERT(clearFormat == VK_FORMAT_S8_UINT);
-			packed = *reinterpret_cast<uint8_t *>(clearValue);
-			break;
 		default:
 			return false;
 	}
@@ -259,14 +249,6 @@
 
 					switch(viewFormat.bytes())
 					{
-						case 4:
-							for(uint32_t i = 0; i < area.extent.height; i++)
-							{
-								ASSERT(d < dest->end());
-								sw::clear((uint32_t *)d, packed, area.extent.width);
-								d += rowPitchBytes;
-							}
-							break;
 						case 2:
 							for(uint32_t i = 0; i < area.extent.height; i++)
 							{
@@ -275,11 +257,11 @@
 								d += rowPitchBytes;
 							}
 							break;
-						case 1:
+						case 4:
 							for(uint32_t i = 0; i < area.extent.height; i++)
 							{
 								ASSERT(d < dest->end());
-								memset(d, packed, area.extent.width);
+								sw::clear((uint32_t *)d, packed, area.extent.width);
 								d += rowPitchBytes;
 							}
 							break;
