diff --git a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
index 1bf5afa..fe84f7d 100644
--- a/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
+++ b/external/vulkancts/modules/vulkan/image/vktImageCompressionTranscodingSupport.cpp
@@ -2615,7 +2615,7 @@
 						<< "layout (binding = 1, "<<formatQualifierStr<<") writeonly uniform "<<imageTypeStr<<" u_image1;\n\n"
 						<< "void main (void)\n"
 						<< "{\n"
-						<< "    const vec2 pixels_resolution = vec2(gl_NumWorkGroups.x - 1, gl_NumWorkGroups.y - 1);\n"
+						<< "    const vec2 pixels_resolution = vec2(gl_NumWorkGroups.x, gl_NumWorkGroups.y);\n"
 						<< coordDefinitions[imageTypeIndex]
 						<< "    imageStore(u_image1, pos, texture(u_image0, coord));\n"
 						<< "}\n";
@@ -2742,16 +2742,16 @@
 						{
 							// IMAGE_TYPE_1D
 							"    const highp int out_pos = int(gl_FragCoord.x);\n"
-							"    const highp int pixels_resolution = textureSize(u_imageIn, 0) - 1;\n"
-							"    const highp float in_pos = float(out_pos) / pixels_resolution;\n",
+							"    const highp float pixels_resolution = textureSize(u_imageIn, 0);\n"
+							"    const highp float in_pos = gl_FragCoord.x / pixels_resolution;\n",
 							// IMAGE_TYPE_2D
 							"    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-							"    const ivec2 pixels_resolution = ivec2(textureSize(u_imageIn, 0)) - ivec2(1,1);\n"
-							"    const vec2 in_pos = vec2(out_pos) / vec2(pixels_resolution);\n",
+							"    const vec2 pixels_resolution = vec2(textureSize(u_imageIn, 0));\n"
+							"    const vec2 in_pos = vec2(gl_FragCoord.xy) / vec2(pixels_resolution);\n",
 							// IMAGE_TYPE_3D
 							"    const ivec3 out_pos = ivec3(gl_FragCoord.xy, 0);\n"
-							"    const ivec3 pixels_resolution = ivec3(textureSize(u_imageIn, 0)) - ivec3(1,1,1);\n"
-							"    const vec3 in_pos = vec3(out_pos) / vec3(pixels_resolution.xy, 1.0);\n",
+							"    const vec3 pixels_resolution = vec3(textureSize(u_imageIn, 0));\n"
+							"    const vec3 in_pos = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution.xy, 1.0);\n",
 						};
 
 						src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n\n"
@@ -2786,28 +2786,28 @@
 				{
 					// IMAGE_TYPE_1D
 					"    const highp int out_pos = int(gl_FragCoord.x);\n"
-					"    const highp int pixels_resolution0 = textureSize(u_imageIn0, 0) - 1;\n"
-					"    const highp float in_pos0 = float(out_pos) / pixels_resolution0;\n",
+					"    const highp float pixels_resolution0 = textureSize(u_imageIn0, 0);\n"
+					"    const highp float in_pos0 = gl_FragCoord.x / pixels_resolution0;\n",
 					// IMAGE_TYPE_2D
 					"    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-					"    const ivec2 pixels_resolution0 = ivec2(textureSize(u_imageIn0, 0)) - ivec2(1,1);\n"
-					"    const vec2 in_pos0 = vec2(out_pos) / vec2(pixels_resolution0);\n",
+					"    const vec2 pixels_resolution0 = vec2(textureSize(u_imageIn0, 0));\n"
+					"    const vec2 in_pos0 = vec2(gl_FragCoord.xy) / vec2(pixels_resolution0);\n",
 					// IMAGE_TYPE_3D
 					"    const ivec3 out_pos = ivec3(ivec2(gl_FragCoord.xy), 0);\n"
-					"    const ivec3 pixels_resolution0 = ivec3(textureSize(u_imageIn0, 0)) - ivec3(1,1,1);\n"
-					"    const vec3 in_pos0 = vec3(out_pos) / vec3(pixels_resolution0);\n",
+					"    const vec3 pixels_resolution0 = vec3(textureSize(u_imageIn0, 0));\n"
+					"    const vec3 in_pos0 = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution0.xy, 1.0);\n",
 				};
 				const char* pos1Definitions[3] =
 				{
 					// IMAGE_TYPE_1D
-					"    const highp int pixels_resolution1 = textureSize(u_imageIn1, 0) - 1;\n"
-					"    const highp float in_pos1 = float(out_pos) / pixels_resolution1;\n",
+					"    const highp float pixels_resolution1 = textureSize(u_imageIn1, 0);\n"
+					"    const highp float in_pos1 = gl_FragCoord.x / pixels_resolution1;\n",
 					// IMAGE_TYPE_2D
-					"    const ivec2 pixels_resolution1 = ivec2(textureSize(u_imageIn1, 0)) - ivec2(1,1);\n"
-					"    const vec2 in_pos1 = vec2(out_pos) / vec2(pixels_resolution1);\n",
+					"    const vec2 pixels_resolution1 = vec2(textureSize(u_imageIn1, 0));\n"
+					"    const vec2 in_pos1 = vec2(gl_FragCoord.xy) / vec2(pixels_resolution1);\n",
 					// IMAGE_TYPE_3D
-					"    const ivec3 pixels_resolution1 = ivec3(textureSize(u_imageIn1, 0)) - ivec3(1,1,1);\n"
-					"    const vec3 in_pos1 = vec3(out_pos) / vec3(pixels_resolution1);\n",
+					"    const vec3 pixels_resolution1 = vec3(textureSize(u_imageIn1, 0));\n"
+					"    const vec3 in_pos1 = vec3(gl_FragCoord.xy, 0) / vec3(pixels_resolution1.xy, 1.0);\n",
 				};
 
 				src << glu::getGLSLVersionDeclaration(glu::GLSL_VERSION_450) << "\n\n"
diff --git a/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
index 43650a8..1ff0905 100644
--- a/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
+++ b/external/vulkancts/modules/vulkan/image/vktImageTranscodingSupportTests.cpp
@@ -793,8 +793,8 @@
 					<< "void main (void)\n"
 					<< "{\n"
 					<< "    const ivec2 out_pos = ivec2(gl_FragCoord.xy);\n"
-					<< "    const ivec2 pixels_resolution = ivec2(textureSize(u_imageIn, 0)) - ivec2(1,1);\n"
-					<< "    const vec2 in_pos = vec2(out_pos) / vec2(pixels_resolution);\n"
+					<< "    const vec2 pixels_resolution = vec2(textureSize(u_imageIn, 0));\n"
+					<< "    const vec2 in_pos = vec2(gl_FragCoord.xy) / vec2(pixels_resolution);\n"
 					<< "    imageStore(u_imageOut, out_pos, texture(u_imageIn, in_pos));\n"
 					<< "}\n";
 
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
index 623f4c1..44901f0 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
@@ -9920,12 +9920,14 @@
 	const string						spvCapabilities		= string("OpCapability StorageUniformBufferBlock16\n") + (nanSupported ? "OpCapability SignedZeroInfNanPreserve\n" : "");
 	const string						spvExtensions		= string("OpExtension \"SPV_KHR_16bit_storage\"\n") + (nanSupported ? "OpExtension \"SPV_KHR_float_controls\"\n" : "");
 	const string						spvExecutionMode	= nanSupported ? "OpExecutionMode %BP_main SignedZeroInfNanPreserve 16\n" : "";
-	const deUint32						numDataPoints		= 16;
-	const vector<deFloat16>				float16Data			= getFloat16s(rnd, numDataPoints);
-	const vector<deFloat16>				float16Data1		= squarize(float16Data, 0);
-	const vector<deFloat16>				float16Data2		= squarize(float16Data, 1);
-	const vector<deFloat16>				float16DataVec1		= squarizeVector(float16Data, 0);
-	const vector<deFloat16>				float16DataVec2		= squarizeVector(float16Data, 1);
+	const deUint32						numDataPointsScalar	= 16;
+	const deUint32						numDataPointsVector	= 14;
+	const vector<deFloat16>				float16DataScalar	= getFloat16s(rnd, numDataPointsScalar);
+	const vector<deFloat16>				float16DataVector	= getFloat16s(rnd, numDataPointsVector);
+	const vector<deFloat16>				float16Data1		= squarize(float16DataScalar, 0);			// Total Size: square(sizeof(float16DataScalar))
+	const vector<deFloat16>				float16Data2		= squarize(float16DataScalar, 1);
+	const vector<deFloat16>				float16DataVec1		= squarizeVector(float16DataVector, 0);		// Total Size: 2 * (square(square(sizeof(float16DataVector))))
+	const vector<deFloat16>				float16DataVec2		= squarizeVector(float16DataVector, 1);
 	const vector<deFloat16>				float16OutDummy		(float16Data1.size(), 0);
 	const vector<deFloat16>				float16OutVecDummy	(float16DataVec1.size(), 0);
 
