diff --git a/external/openglcts/modules/common/glcNearestEdgeTests.cpp b/external/openglcts/modules/common/glcNearestEdgeTests.cpp
index 621a662..f9c754a 100644
--- a/external/openglcts/modules/common/glcNearestEdgeTests.cpp
+++ b/external/openglcts/modules/common/glcNearestEdgeTests.cpp
@@ -171,32 +171,44 @@
 		TCU_THROW(NotSupportedError, "Render target size too small");
 
 	m_vertShaderText =
-		"#version ${VERSION}\n"
-		"\n"
-		"in highp vec2 position;\n"
-		"in highp vec2 inTexCoord;\n"
-		"out highp vec2 commonTexCoord;\n"
-		"\n"
-		"void main()\n"
-		"{\n"
-		"    commonTexCoord = inTexCoord;\n"
-		"    gl_Position = vec4(position, 0.0, 1.0);\n"
-		"}\n"
-		;
-
-	m_fragShaderText =
-		"#version ${VERSION}\n"
-		"\n"
-		"in highp vec2 commonTexCoord;\n"
-		"out highp vec4 fragColor;\n"
-		"\n"
-		"uniform highp sampler2D texSampler;\n"
-		"\n"
-		"void main()\n"
-		"{\n"
-		"    fragColor = texture(texSampler, commonTexCoord);\n"
-		"}\n"
-		"\n";
+        "#version ${VERSION}\n"
+        "\n"
+        "in highp vec2 position;\n"
+        "\n"
+        "void main()\n"
+        "{\n"
+        "    gl_Position = vec4(position, 0.0, 1.0);\n"
+        "}\n"
+        ;
+    m_fragShaderText =
+        "#version ${VERSION}\n"
+        "\n"
+        "precision highp float;\n"
+        "out highp vec4 fragColor;\n"
+        "\n"
+        "uniform highp sampler2D texSampler;\n"
+        "uniform int texOffset;\n"
+        "uniform float texWidth;\n"
+        "uniform float texHeight;\n"
+        "\n"
+        "void main()\n"
+        "{\n"
+        "    float texCoordX;\n"
+        "    float texCoordY;\n"
+        "    if(texOffset > 0)\n"
+        "    {\n"
+        "        texCoordX  = (gl_FragCoord.x + 0.499) / texWidth;\n "
+        "        texCoordY = (gl_FragCoord.y + 0.499) / texHeight;\n"
+        "    }\n"
+        "    else\n"
+        "    {\n"
+        "       texCoordX  = (gl_FragCoord.x - 0.499) / texWidth;\n"
+        "       texCoordY = (gl_FragCoord.y - 0.499) / texHeight;\n"
+        "    }\n"
+        "    vec2 sampleCoord = vec2(texCoordX, texCoordY);\n"
+        "    fragColor = texture(texSampler, sampleCoord);\n"
+        "}\n"
+        "\n";
 
 	tcu::StringTemplate vertShaderTemplate{m_vertShaderText};
 	tcu::StringTemplate fragShaderTemplate{m_fragShaderText};
@@ -301,8 +313,7 @@
 
 	const std::vector<glu::VertexArrayBinding> vertexArrays =
 	{
-		glu::va::Float("position", 2, 4, 0, positions.data()),
-		glu::va::Float("inTexCoord", 2, 4, 0, texCoords.data())
+		glu::va::Float("position", 2, 4, 0, positions.data())
 	};
 
 	glu::ShaderProgram program(m_context.getRenderContext(), glu::makeVtxFragSources(m_vertShaderText, m_fragShaderText));
@@ -315,6 +326,11 @@
 	gl.uniform1i(gl.getUniformLocation(program.getProgram(), "texSampler"), 0);
 	GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
 
+	gl.uniform1i(gl.getUniformLocation(program.getProgram(), "texOffset"),m_offsetSign);
+	gl.uniform1f(gl.getUniformLocation(program.getProgram(), "texWidth"), float(m_width));
+	gl.uniform1f(gl.getUniformLocation(program.getProgram(), "texHeight"), float(m_height));
+	GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
+
 	gl.clear(GL_COLOR_BUFFER_BIT);
 
 	glu::draw(renderContext, program.getProgram(),
