diff --git a/src/Device/Blitter.cpp b/src/Device/Blitter.cpp
index 63c6040..edf7cad 100644
--- a/src/Device/Blitter.cpp
+++ b/src/Device/Blitter.cpp
@@ -231,7 +231,7 @@
 							for(uint32_t i = 0; i < area.extent.height; i++)
 							{
 								ASSERT(d < dest->end());
-								sw::clear((uint16_t*)d, packed, area.extent.width);
+								sw::clear((uint16_t*)d, static_cast<uint16_t>(packed), area.extent.width);
 								d += rowPitchBytes;
 							}
 							break;
@@ -1447,7 +1447,7 @@
 									preScaled = true;
 								}
 								Float4 accum = color;
-								for(int i = 1; i < state.srcSamples; i++)
+								for(int sample = 1; sample < state.srcSamples; sample++)
 								{
 									s += *Pointer<Int>(blit + OFFSET(BlitData, sSliceB));
 									if(!read(color, s, state))
diff --git a/src/Device/Color.hpp b/src/Device/Color.hpp
index a87f5db..0e6fc27 100644
--- a/src/Device/Color.hpp
+++ b/src/Device/Color.hpp
@@ -92,19 +92,19 @@
 	template<>
 	inline Color<byte>::Color(const Color<short> &c)
 	{
-		r = clamp(c.r >> 4, 0, 255);
-		g = clamp(c.g >> 4, 0, 255);
-		b = clamp(c.b >> 4, 0, 255);
-		a = clamp(c.a >> 4, 0, 255);
+		r = static_cast<byte>(clamp(c.r >> 4, 0, 255));
+		g = static_cast<byte>(clamp(c.g >> 4, 0, 255));
+		b = static_cast<byte>(clamp(c.b >> 4, 0, 255));
+		a = static_cast<byte>(clamp(c.a >> 4, 0, 255));
 	}
 
 	template<>
 	inline Color<byte>::Color(const Color<float> &c)
 	{
-		r = ifloor(clamp(c.r * 256.0f, 0.0f, 255.0f));
-		g = ifloor(clamp(c.g * 256.0f, 0.0f, 255.0f));
-		b = ifloor(clamp(c.b * 256.0f, 0.0f, 255.0f));
-		a = ifloor(clamp(c.a * 256.0f, 0.0f, 255.0f));
+		r = static_cast<byte>(ifloor(clamp(c.r * 256.0f, 0.0f, 255.0f)));
+		g = static_cast<byte>(ifloor(clamp(c.g * 256.0f, 0.0f, 255.0f)));
+		b = static_cast<byte>(ifloor(clamp(c.b * 256.0f, 0.0f, 255.0f)));
+		a = static_cast<byte>(ifloor(clamp(c.a * 256.0f, 0.0f, 255.0f)));
 	}
 
 	template<>
@@ -137,10 +137,10 @@
 	template<>
 	inline Color<short>::Color(const Color<float> &c)
 	{
-		r = iround(clamp(c.r * 4095.0f, -4096.0f, 4095.0f));
-		g = iround(clamp(c.g * 4095.0f, -4096.0f, 4095.0f));
-		b = iround(clamp(c.b * 4095.0f, -4096.0f, 4095.0f));
-		a = iround(clamp(c.a * 4095.0f, -4096.0f, 4095.0f));
+		r = static_cast<short>(iround(clamp(c.r * 4095.0f, -4096.0f, 4095.0f)));
+		g = static_cast<short>(iround(clamp(c.g * 4095.0f, -4096.0f, 4095.0f)));
+		b = static_cast<short>(iround(clamp(c.b * 4095.0f, -4096.0f, 4095.0f)));
+		a = static_cast<short>(iround(clamp(c.a * 4095.0f, -4096.0f, 4095.0f)));
 	}
 
 	template<>
diff --git a/src/Device/ETC_Decoder.cpp b/src/Device/ETC_Decoder.cpp
index c40f7da..aba807f 100644
--- a/src/Device/ETC_Decoder.cpp
+++ b/src/Device/ETC_Decoder.cpp
@@ -16,21 +16,21 @@
 
 namespace
 {
-	inline int clampByte(int value)
+	inline unsigned char clampByte(int value)
 	{
-		return (value < 0) ? 0 : ((value > 255) ? 255 : value);
+		return static_cast<unsigned char>((value < 0) ? 0 : ((value > 255) ? 255 : value));
 	}
 
-	inline int clampSByte(int value)
+	inline signed char clampSByte(int value)
 	{
-		return (value < -128) ? -128 : ((value > 127) ? 127 : value);
+		return static_cast<signed char>((value < -128) ? -128 : ((value > 127) ? 127 : value));
 	}
 
-	inline short clampEAC(short value, bool isSigned)
+	inline short clampEAC(int value, bool isSigned)
 	{
 		short min = isSigned ? -1023 : 0;
 		short max = isSigned ? 1023 : 2047;
-		return ((value < min) ? min : ((value > max) ? max : value)) << 5;
+		return static_cast<short>(((value < min) ? min : ((value > max) ? max : value)) << 5);
 	}
 
 	struct bgra8
@@ -46,20 +46,20 @@
 
 		inline void set(int red, int green, int blue)
 		{
-			r = static_cast<unsigned char>(clampByte(red));
-			g = static_cast<unsigned char>(clampByte(green));
-			b = static_cast<unsigned char>(clampByte(blue));
+			r = clampByte(red);
+			g = clampByte(green);
+			b = clampByte(blue);
 		}
 
 		inline void set(int red, int green, int blue, int alpha)
 		{
-			r = static_cast<unsigned char>(clampByte(red));
-			g = static_cast<unsigned char>(clampByte(green));
-			b = static_cast<unsigned char>(clampByte(blue));
-			a = static_cast<unsigned char>(clampByte(alpha));
+			r = clampByte(red);
+			g = clampByte(green);
+			b = clampByte(blue);
+			a = clampByte(alpha);
 		}
 
-		const bgra8& addA(int alpha)
+		const bgra8& addA(unsigned char alpha)
 		{
 			a = alpha;
 			return *this;
diff --git a/src/Device/PixelProcessor.cpp b/src/Device/PixelProcessor.cpp
index 797e3da..e9e708c 100644
--- a/src/Device/PixelProcessor.cpp
+++ b/src/Device/PixelProcessor.cpp
@@ -67,10 +67,10 @@
 	void PixelProcessor::setBlendConstant(const Color<float> &blendConstant)
 	{
 		// FIXME: Compact into generic function   // FIXME: Clamp
-		short blendConstantR = iround(65535 * blendConstant.r);
-		short blendConstantG = iround(65535 * blendConstant.g);
-		short blendConstantB = iround(65535 * blendConstant.b);
-		short blendConstantA = iround(65535 * blendConstant.a);
+		short blendConstantR = static_cast<short>(iround(65535 * blendConstant.r));
+		short blendConstantG = static_cast<short>(iround(65535 * blendConstant.g));
+		short blendConstantB = static_cast<short>(iround(65535 * blendConstant.b));
+		short blendConstantA = static_cast<short>(iround(65535 * blendConstant.a));
 
 		factor.blendConstant4W[0][0] = blendConstantR;
 		factor.blendConstant4W[0][1] = blendConstantR;
@@ -93,10 +93,10 @@
 		factor.blendConstant4W[3][3] = blendConstantA;
 
 		// FIXME: Compact into generic function   // FIXME: Clamp
-		short invBlendConstantR = iround(65535 * (1 - blendConstant.r));
-		short invBlendConstantG = iround(65535 * (1 - blendConstant.g));
-		short invBlendConstantB = iround(65535 * (1 - blendConstant.b));
-		short invBlendConstantA = iround(65535 * (1 - blendConstant.a));
+		short invBlendConstantR = static_cast<short>(iround(65535 * (1 - blendConstant.r)));
+		short invBlendConstantG = static_cast<short>(iround(65535 * (1 - blendConstant.g)));
+		short invBlendConstantB = static_cast<short>(iround(65535 * (1 - blendConstant.b)));
+		short invBlendConstantA = static_cast<short>(iround(65535 * (1 - blendConstant.a)));
 
 		factor.invBlendConstant4W[0][0] = invBlendConstantR;
 		factor.invBlendConstant4W[0][1] = invBlendConstantR;
diff --git a/src/Device/Stream.hpp b/src/Device/Stream.hpp
index b9ff604..654a9f8 100644
--- a/src/Device/Stream.hpp
+++ b/src/Device/Stream.hpp
@@ -52,7 +52,7 @@
 			this->instanceStride = 0;
 		}
 
-		Stream &define(StreamType type, unsigned int count, bool normalized = false)
+		Stream &define(StreamType type, unsigned char count, bool normalized = false)
 		{
 			this->type = type;
 			this->count = count;
@@ -61,7 +61,7 @@
 			return *this;
 		}
 
-		Stream &define(const void *buffer, StreamType type, unsigned int count, bool normalized = false)
+		Stream &define(const void *buffer, StreamType type, unsigned char count, bool normalized = false)
 		{
 			this->buffer = buffer;
 			this->type = type;
diff --git a/src/Pipeline/SamplerCore.cpp b/src/Pipeline/SamplerCore.cpp
index 302c73e..0dd30b9 100644
--- a/src/Pipeline/SamplerCore.cpp
+++ b/src/Pipeline/SamplerCore.cpp
@@ -1343,16 +1343,16 @@
 				c.x = (c.x & Short4(0xF800u));
 				break;
 			case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
-				c.w = (c.x << 12) & Short4(0xF000);
-				c.z = (c.x) & Short4(0xF000);
-				c.y = (c.x << 4) & Short4(0xF000);
-				c.x = (c.x << 8) & Short4(0xF000);
+				c.w = (c.x << 12) & Short4(0xF000u);
+				c.z = (c.x) & Short4(0xF000u);
+				c.y = (c.x << 4) & Short4(0xF000u);
+				c.x = (c.x << 8) & Short4(0xF000u);
 				break;
 			case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
-				c.w = (c.x) & Short4(0x8000);
-				c.z = (c.x << 11) & Short4(0xF800);
-				c.y = (c.x << 6) & Short4(0xF800);
-				c.x = (c.x << 1) & Short4(0xF800);
+				c.w = (c.x) & Short4(0x8000u);
+				c.z = (c.x << 11) & Short4(0xF800u);
+				c.y = (c.x << 6) & Short4(0xF800u);
+				c.x = (c.x << 1) & Short4(0xF800u);
 				break;
 			default:
 				ASSERT(false);
@@ -1408,10 +1408,10 @@
 						if (state.textureFormat == VK_FORMAT_R8G8B8A8_SNORM)
 						{
 							// TODO: avoid populating the low bits at all.
-							c.x &= Short4(0xFF00);
-							c.y &= Short4(0xFF00);
-							c.z &= Short4(0xFF00);
-							c.w &= Short4(0xFF00);
+							c.x &= Short4(0xFF00u);
+							c.y &= Short4(0xFF00u);
+							c.z &= Short4(0xFF00u);
+							c.w &= Short4(0xFF00u);
 						}
 
 						break;
@@ -1483,7 +1483,7 @@
 					case VK_FORMAT_R8_SNORM:
 						// TODO: avoid populating the low bits at all.
 						c.x = Unpack(As<Byte4>(c0));
-						c.x &= Short4(0xff00);
+						c.x &= Short4(0xFF00u);
 						break;
 					default:
 						c.x = Unpack(As<Byte4>(c0));
@@ -1660,9 +1660,14 @@
 			{
 				// Scaling and bias for studio-swing range: Y = [16 .. 235], U/V = [16 .. 240]
 				// Scale down by 0x0101 to normalize the 8.8 samples, and up by 0x7FFF for signed 15-bit output.
-				Float4 y = (Float4(Y)  - Float4(state.studioSwing ? 16 * 0x0101 : 0)) * Float4(float(0x7FFF) / (state.studioSwing ? 219 * 0x0101 : 255 * 0x0101));
-				Float4 u = (Float4(Cb) - Float4(128 * 0x0101))                        * Float4(float(0x7FFF) / (state.studioSwing ? 224 * 0x0101 : 255 * 0x0101));
-				Float4 v = (Float4(Cr) - Float4(128 * 0x0101))                        * Float4(float(0x7FFF) / (state.studioSwing ? 224 * 0x0101 : 255 * 0x0101));
+				float yOffset  = static_cast<float>(state.studioSwing ? 16 * 0x0101 : 0);
+				float uvOffset = static_cast<float>(128 * 0x0101);
+				float yFactor  = static_cast<float>(0x7FFF) / static_cast<float>(state.studioSwing ? 219 * 0x0101 : 255 * 0x0101);
+				float uvFactor = static_cast<float>(0x7FFF) / static_cast<float>(state.studioSwing ? 224 * 0x0101 : 255 * 0x0101);
+
+				Float4 y = (Float4(Y)  - Float4(yOffset))  * Float4(yFactor);
+				Float4 u = (Float4(Cb) - Float4(uvOffset)) * Float4(uvFactor);
+				Float4 v = (Float4(Cr) - Float4(uvOffset)) * Float4(uvFactor);
 
 				if(state.ycbcrModel == VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY)
 				{
@@ -1936,7 +1941,7 @@
 
 		bool scaled = !hasFloatTexture() && !hasUnnormalizedIntegerTexture() && !state.compareEnable;
 		bool sign = !hasUnsignedTextureComponent(0);
-		Int4 float_one = scaled ? As<Int4>(Float4(sign ? 0x7FFF : 0xFFFF)) : As<Int4>(Float4(1.0f));
+		Int4 float_one = scaled ? As<Int4>(Float4(static_cast<float>(sign ? 0x7FFF : 0xFFFF))) : As<Int4>(Float4(1.0f));
 
 		switch(state.border)
 		{
diff --git a/src/Pipeline/ShaderCore.cpp b/src/Pipeline/ShaderCore.cpp
index 6a9fc08..b28e8f4 100644
--- a/src/Pipeline/ShaderCore.cpp
+++ b/src/Pipeline/ShaderCore.cpp
@@ -135,7 +135,7 @@
 		return ii * ff;
 	}
 
-	Float4 logarithm2(RValue<Float4> x, bool absolute, bool pp)
+	Float4 logarithm2(RValue<Float4> x, bool pp)
 	{
 		Float4 x0;
 		Float4 x1;
@@ -166,15 +166,15 @@
 		return exponential2(Float4(1.44269504f) * x, pp);   // 1/ln(2)
 	}
 
-	Float4 logarithm(RValue<Float4> x, bool absolute, bool pp)
+	Float4 logarithm(RValue<Float4> x, bool pp)
 	{
 		// FIXME: Propagate the constant
-		return Float4(6.93147181e-1f) * logarithm2(x, absolute, pp);   // ln(2)
+		return Float4(6.93147181e-1f) * logarithm2(x, pp);   // ln(2)
 	}
 
 	Float4 power(RValue<Float4> x, RValue<Float4> y, bool pp)
 	{
-		Float4 log = logarithm2(x, true, pp);
+		Float4 log = logarithm2(x, pp);
 		log *= y;
 		return exponential2(log, pp);
 	}
diff --git a/src/Pipeline/ShaderCore.hpp b/src/Pipeline/ShaderCore.hpp
index e1da028..fb59e93 100644
--- a/src/Pipeline/ShaderCore.hpp
+++ b/src/Pipeline/ShaderCore.hpp
@@ -55,9 +55,9 @@
 	};
 
 	Float4 exponential2(RValue<Float4> x, bool pp = false);
-	Float4 logarithm2(RValue<Float4> x, bool abs, bool pp = false);
+	Float4 logarithm2(RValue<Float4> x, bool pp = false);
 	Float4 exponential(RValue<Float4> x, bool pp = false);
-	Float4 logarithm(RValue<Float4> x, bool abs, bool pp = false);
+	Float4 logarithm(RValue<Float4> x, bool pp = false);
 	Float4 power(RValue<Float4> x, RValue<Float4> y, bool pp = false);
 	Float4 reciprocal(RValue<Float4> x, bool pp = false, bool finite = false, bool exactAtPow2 = false);
 	Float4 reciprocalSquareRoot(RValue<Float4> x, bool abs, bool pp = false);
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index 7294102..5d2b2da 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -592,7 +592,7 @@
 				case spv::StorageClassWorkgroup:
 				{
 					auto &elTy = getType(getType(typeId).element);
-					auto sizeInBytes = elTy.sizeInComponents * sizeof(float);
+					auto sizeInBytes = elTy.sizeInComponents * static_cast<uint32_t>(sizeof(float));
 					workgroupMemory.allocate(resultId, sizeInBytes);
 					object.kind = Object::Kind::Pointer;
 					break;
@@ -1379,7 +1379,7 @@
 			break;
 		case spv::OpTypeVector:
 		{
-			auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride : sizeof(float);
+			auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride : static_cast<int32_t>(sizeof(float));
 			for (auto i = 0u; i < type.definition.word(3); i++)
 			{
 				VisitMemoryObjectInner(type.definition.word(2), d, index, offset + elemStride * i, f);
@@ -1388,7 +1388,7 @@
 		}
 		case spv::OpTypeMatrix:
 		{
-			auto columnStride = (d.HasRowMajor && d.RowMajor) ? sizeof(float) : d.MatrixStride;
+			auto columnStride = (d.HasRowMajor && d.RowMajor) ? static_cast<int32_t>(sizeof(float)) : d.MatrixStride;
 			d.InsideMatrix = true;
 			for (auto i = 0u; i < type.definition.word(3); i++)
 			{
@@ -1594,7 +1594,7 @@
 				// TODO: b/127950082: Check bounds.
 				ASSERT(d.HasMatrixStride);
 				d.InsideMatrix = true;
-				auto columnStride = (d.HasRowMajor && d.RowMajor) ? sizeof(float) : d.MatrixStride;
+				auto columnStride = (d.HasRowMajor && d.RowMajor) ? static_cast<int32_t>(sizeof(float)) : d.MatrixStride;
 				auto & obj = getObject(indexIds[i]);
 				if (obj.kind == Object::Kind::Constant)
 				{
@@ -1609,7 +1609,7 @@
 			}
 			case spv::OpTypeVector:
 			{
-				auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride : sizeof(float);
+				auto elemStride = (d.InsideMatrix && d.HasRowMajor && d.RowMajor) ? d.MatrixStride : static_cast<int32_t>(sizeof(float));
 				auto & obj = getObject(indexIds[i]);
 				if (obj.kind == Object::Kind::Constant)
 				{
@@ -1679,12 +1679,12 @@
 					ASSERT(d.DescriptorSet >= 0);
 					ASSERT(d.Binding >= 0);
 					auto setLayout = routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
-					auto stride = setLayout->getBindingStride(d.Binding);
+					auto stride = static_cast<uint32_t>(setLayout->getBindingStride(d.Binding));
 					ptr.base += stride * GetConstScalarInt(indexIds[i]);
 				}
 				else
 				{
-					auto stride = getType(type.element).sizeInComponents * sizeof(float);
+					auto stride = getType(type.element).sizeInComponents * static_cast<uint32_t>(sizeof(float));
 					auto & obj = getObject(indexIds[i]);
 					if (obj.kind == Object::Kind::Constant)
 					{
@@ -2619,7 +2619,7 @@
 			ASSERT(objectTy.opcode() == spv::OpTypePointer);
 			auto base = &routine->getVariable(resultId)[0];
 			auto elementTy = getType(objectTy.element);
-			auto size = elementTy.sizeInComponents * sizeof(float) * SIMD::Width;
+			auto size = elementTy.sizeInComponents * static_cast<uint32_t>(sizeof(float)) * SIMD::Width;
 			routine->createPointer(resultId, SIMD::Pointer(base, size));
 			break;
 		}
@@ -2646,7 +2646,7 @@
 			ASSERT(objectTy.opcode() == spv::OpTypePointer);
 			auto base = &routine->getVariable(resultId)[0];
 			auto elementTy = getType(objectTy.element);
-			auto size = elementTy.sizeInComponents * sizeof(float) * SIMD::Width;
+			auto size = elementTy.sizeInComponents * static_cast<uint32_t>(sizeof(float)) * SIMD::Width;
 			routine->createPointer(resultId, SIMD::Pointer(base, size));
 			break;
 		}
@@ -2660,7 +2660,7 @@
 			auto setLayout = routine->pipelineLayout->getDescriptorSetLayout(d.DescriptorSet);
 			if (setLayout->hasBinding(d.Binding))
 			{
-				size_t bindingOffset = setLayout->getBindingOffset(d.Binding, arrayIndex);
+				uint32_t bindingOffset = static_cast<uint32_t>(setLayout->getBindingOffset(d.Binding, arrayIndex));
 				Pointer<Byte> set = routine->descriptorSets[d.DescriptorSet];  // DescriptorSet*
 				Pointer<Byte> binding = Pointer<Byte>(set + bindingOffset);    // vk::SampledImageDescriptor*
 				auto size = 0; // Not required as this pointer is not directly used by SIMD::Read or SIMD::Write.
diff --git a/src/Vulkan/VkBufferView.hpp b/src/Vulkan/VkBufferView.hpp
index 732f600..4d67ab2 100644
--- a/src/Vulkan/VkBufferView.hpp
+++ b/src/Vulkan/VkBufferView.hpp
@@ -35,8 +35,8 @@
 	}
 
 	void *getPointer() const;
-	uint32_t getElementCount() const { return range / Format(format).bytes(); }
-	uint32_t getRangeInBytes() const { return range; }
+	uint32_t getElementCount() const { return static_cast<uint32_t>(range / Format(format).bytes()); }
+	uint32_t getRangeInBytes() const { return static_cast<uint32_t>(range); }
 	VkFormat getFormat() const { return format; }
 
 	const uint32_t id = ImageView::nextID++;	// ID space for sampling function cache, shared with imageviews
diff --git a/src/Vulkan/VkDescriptorPool.hpp b/src/Vulkan/VkDescriptorPool.hpp
index 8926467..731dd01 100644
--- a/src/Vulkan/VkDescriptorPool.hpp
+++ b/src/Vulkan/VkDescriptorPool.hpp
@@ -41,8 +41,8 @@
 		struct Node
 		{
 			Node(VkDescriptorSet set, size_t size) : set(set), size(size) {}
-			bool operator<(const Node& node) const { return this->set < node.set; }
-			bool operator==(VkDescriptorSet set) const { return this->set == set; }
+			bool operator<(const Node& node) const { return set < node.set; }
+			bool operator==(VkDescriptorSet other) const { return set == other; }
 
 			VkDescriptorSet set = VK_NULL_HANDLE;
 			size_t size = 0;
diff --git a/src/Vulkan/VkDescriptorSetLayout.cpp b/src/Vulkan/VkDescriptorSetLayout.cpp
index d6668cd..16fb5b9 100644
--- a/src/Vulkan/VkDescriptorSetLayout.cpp
+++ b/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -255,17 +255,17 @@
 	return &descriptorSet->data[byteOffset];
 }
 
-void SampledImageDescriptor::updateSampler(const vk::Sampler *sampler)
+void SampledImageDescriptor::updateSampler(const vk::Sampler *newSampler)
 {
-	if(sampler)
+	if(newSampler)
 	{
-		memcpy(&this->sampler, sampler, sizeof(this->sampler));
+		memcpy(&sampler, newSampler, sizeof(sampler));
 	}
 	else
 	{
 		// Descriptor ID's start at 1, allowing to detect descriptor update
 		// bugs by checking for 0. Also avoid reading random values.
-		memset(&this->sampler, 0, sizeof(this->sampler));
+		memset(&sampler, 0, sizeof(sampler));
 	}
 }
 
@@ -315,8 +315,8 @@
 			imageSampler[i].arrayLayers = 1;
 			imageSampler[i].mipLevels = 1;
 			imageSampler[i].sampleCount = 1;
-			imageSampler[i].texture.widthWidthHeightHeight = sw::vector(numElements, numElements, 1, 1);
-			imageSampler[i].texture.width = sw::replicate(numElements);
+			imageSampler[i].texture.widthWidthHeightHeight = sw::vector(static_cast<float>(numElements), static_cast<float>(numElements), 1, 1);
+			imageSampler[i].texture.width = sw::replicate(static_cast<float>(numElements));
 			imageSampler[i].texture.height = sw::replicate(1);
 			imageSampler[i].texture.depth = sw::replicate(1);
 
@@ -448,7 +448,7 @@
 			descriptor[i].slicePitchBytes = descriptor[i].samplePitchBytes * imageView->getSampleCount();
 			descriptor[i].arrayLayers = imageView->getSubresourceRange().layerCount;
 			descriptor[i].sampleCount = imageView->getSampleCount();
-			descriptor[i].sizeInBytes = imageView->getImageSizeInBytes();
+			descriptor[i].sizeInBytes = static_cast<int>(imageView->getImageSizeInBytes());
 
 			if (imageView->getFormat().isStencil())
 			{
@@ -489,8 +489,8 @@
 			auto update = reinterpret_cast<VkDescriptorBufferInfo const *>(src + entry.offset + entry.stride * i);
 			auto buffer = Cast(update->buffer);
 			descriptor[i].ptr = buffer->getOffsetPointer(update->offset);
-			descriptor[i].sizeInBytes = (update->range == VK_WHOLE_SIZE) ? buffer->getSize() - update->offset : update->range;
-			descriptor[i].robustnessSize = buffer->getSize() - update->offset;
+			descriptor[i].sizeInBytes = static_cast<int>((update->range == VK_WHOLE_SIZE) ? buffer->getSize() - update->offset : update->range);
+			descriptor[i].robustnessSize = static_cast<int>(buffer->getSize() - update->offset);
 		}
 	}
 }
@@ -499,25 +499,25 @@
 {
 	if(level == 0)
 	{
-		texture->widthWidthHeightHeight[0] = width;
-		texture->widthWidthHeightHeight[1] = width;
-		texture->widthWidthHeightHeight[2] = height;
-		texture->widthWidthHeightHeight[3] = height;
+		texture->widthWidthHeightHeight[0] =
+		texture->widthWidthHeightHeight[1] = static_cast<float>(width);
+		texture->widthWidthHeightHeight[2] =
+		texture->widthWidthHeightHeight[3] = static_cast<float>(height);
 
-		texture->width[0] = width;
-		texture->width[1] = width;
-		texture->width[2] = width;
-		texture->width[3] = width;
+		texture->width[0] =
+		texture->width[1] =
+		texture->width[2] =
+		texture->width[3] = static_cast<float>(width);
 
-		texture->height[0] = height;
-		texture->height[1] = height;
-		texture->height[2] = height;
-		texture->height[3] = height;
+		texture->height[0] =
+		texture->height[1] =
+		texture->height[2] =
+		texture->height[3] = static_cast<float>(height);
 
-		texture->depth[0] = depth;
-		texture->depth[1] = depth;
-		texture->depth[2] = depth;
-		texture->depth[3] = depth;
+		texture->depth[0] =
+		texture->depth[1] =
+		texture->depth[2] =
+		texture->depth[3] = static_cast<float>(depth);
 	}
 
 	sw::Mipmap &mipmap = texture->mipmap[level];
@@ -526,40 +526,40 @@
 	short halfTexelV = 0x8000 / height;
 	short halfTexelW = 0x8000 / depth;
 
-	mipmap.uHalf[0] = halfTexelU;
-	mipmap.uHalf[1] = halfTexelU;
-	mipmap.uHalf[2] = halfTexelU;
+	mipmap.uHalf[0] =
+	mipmap.uHalf[1] =
+	mipmap.uHalf[2] =
 	mipmap.uHalf[3] = halfTexelU;
 
-	mipmap.vHalf[0] = halfTexelV;
-	mipmap.vHalf[1] = halfTexelV;
-	mipmap.vHalf[2] = halfTexelV;
+	mipmap.vHalf[0] =
+	mipmap.vHalf[1] =
+	mipmap.vHalf[2] =
 	mipmap.vHalf[3] = halfTexelV;
 
-	mipmap.wHalf[0] = halfTexelW;
-	mipmap.wHalf[1] = halfTexelW;
-	mipmap.wHalf[2] = halfTexelW;
+	mipmap.wHalf[0] =
+	mipmap.wHalf[1] =
+	mipmap.wHalf[2] =
 	mipmap.wHalf[3] = halfTexelW;
 
-	mipmap.width[0] = width;
-	mipmap.width[1] = width;
-	mipmap.width[2] = width;
+	mipmap.width[0] =
+	mipmap.width[1] =
+	mipmap.width[2] =
 	mipmap.width[3] = width;
 
-	mipmap.height[0] = height;
-	mipmap.height[1] = height;
-	mipmap.height[2] = height;
+	mipmap.height[0] =
+	mipmap.height[1] =
+	mipmap.height[2] =
 	mipmap.height[3] = height;
 
-	mipmap.depth[0] = depth;
-	mipmap.depth[1] = depth;
-	mipmap.depth[2] = depth;
+	mipmap.depth[0] =
+	mipmap.depth[1] =
+	mipmap.depth[2] =
 	mipmap.depth[3] = depth;
 
 	mipmap.onePitchP[0] = 1;
-	mipmap.onePitchP[1] = pitchP;
+	mipmap.onePitchP[1] = static_cast<short>(pitchP);
 	mipmap.onePitchP[2] = 1;
-	mipmap.onePitchP[3] = pitchP;
+	mipmap.onePitchP[3] = static_cast<short>(pitchP);
 
 	mipmap.pitchP[0] = pitchP;
 	mipmap.pitchP[1] = pitchP;
diff --git a/src/Vulkan/VkDescriptorSetLayout.hpp b/src/Vulkan/VkDescriptorSetLayout.hpp
index 8ebdfda..63f1211 100644
--- a/src/Vulkan/VkDescriptorSetLayout.hpp
+++ b/src/Vulkan/VkDescriptorSetLayout.hpp
@@ -29,6 +29,8 @@
 // TODO(b/129523279): Move to the Device or Pipeline layer.
 struct alignas(16) SampledImageDescriptor
 {
+	~SampledImageDescriptor() = delete;
+
 	void updateSampler(const vk::Sampler *sampler);
 
 	// TODO(b/129523279): Minimize to the data actually needed.
@@ -47,6 +49,8 @@
 
 struct alignas(16) StorageImageDescriptor
 {
+	~StorageImageDescriptor() = delete;
+
 	void *ptr;
 	VkExtent3D extent;
 	int rowPitchBytes;
@@ -64,6 +68,8 @@
 
 struct alignas(16) BufferDescriptor
 {
+	~BufferDescriptor() = delete;
+
 	void *ptr;
 	int sizeInBytes;		// intended size of the bound region -- slides along with dynamic offsets
 	int robustnessSize;		// total accessible size from static offset -- does not move with dynamic offset
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 9bdec50..bb963b3 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -289,7 +289,7 @@
 
 void PhysicalDevice::getProperties(VkPhysicalDeviceMaintenance3Properties* properties) const
 {
-	properties->maxMemoryAllocationSize = 1 << 31;
+	properties->maxMemoryAllocationSize = 1u << 31;
 	properties->maxPerSetDescriptors = 1024;
 }
 
@@ -718,7 +718,7 @@
 		break;
 	}
 
-	pImageFormatProperties->maxResourceSize = 1 << 31; // Minimum value for maxResourceSize
+	pImageFormatProperties->maxResourceSize = 1u << 31; // Minimum value for maxResourceSize
 
 	// "Images created with tiling equal to VK_IMAGE_TILING_LINEAR have further restrictions on their limits and capabilities
 	//  compared to images created with tiling equal to VK_IMAGE_TILING_OPTIMAL."
diff --git a/src/Vulkan/VkPipeline.cpp b/src/Vulkan/VkPipeline.cpp
index 4d16ccd..18f5324 100644
--- a/src/Vulkan/VkPipeline.cpp
+++ b/src/Vulkan/VkPipeline.cpp
@@ -92,7 +92,7 @@
 	return sw::STREAMTYPE_BYTE;
 }
 
-uint32_t getNumberOfChannels(VkFormat format)
+unsigned char getNumberOfChannels(VkFormat format)
 {
 	switch(format)
 	{
