diff --git a/src/tests/angle_end2end_tests_expectations.txt b/src/tests/angle_end2end_tests_expectations.txt
index c0cc02d..1e95a59 100644
--- a/src/tests/angle_end2end_tests_expectations.txt
+++ b/src/tests/angle_end2end_tests_expectations.txt
@@ -147,7 +147,6 @@
 410591534 WIN INTEL OPENGL : TextureCubeTestES3.IncompatibleCubeFacesThenSingleFaceCompatibleUploadAndIncompatibleAgain*/* = SKIP
 411157348 WIN D3D11 : ImageTestES31.UseSourceTextureAsStorageImage/* = SKIP
 409821658 WIN INTEL OPENGL : SRGBTextureTestES3.SRGBSkipEncodeAndDecodeInGenerateMipmap/ES3_OpenGL* = SKIP
-444980424 NVIDIA VULKAN : ShadingRateEXTTest.FragmentShadingRatePrimitive/* = SKIP
 447556589 WIN INTEL OPENGL : GeometryShaderTest.ImplicitSizedArrayMatchesExplicitSizedArray/* = SKIP
 447556589 WIN INTEL OPENGL : GeometryShaderTest.ImplicitSizedArrayMatchesExplicitSizedArray2/* = SKIP
 
@@ -1687,7 +1686,6 @@
 410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.ModifyTextureDuringPLS/* = SKIP
 410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.PLSActive_bans_blend_equation_advanced/* = SKIP
 410630704 SAMSUNG GALAXYS24EXYNOS : PixelLocalStorageValidationTest.PLSActive_bans_blend_func_extended/* = SKIP
-410630704 SAMSUNG GALAXYS24EXYNOS VULKAN : ShadingRateEXTTest.FragmentShadingRatePrimitive/* = SKIP
 
 
 // Snapdragon 8 Gen3 Mobile Reference Device
diff --git a/src/tests/gl_tests/ShadingRateEXTTest.cpp b/src/tests/gl_tests/ShadingRateEXTTest.cpp
index 604793b..fa035b6 100644
--- a/src/tests/gl_tests/ShadingRateEXTTest.cpp
+++ b/src/tests/gl_tests/ShadingRateEXTTest.cpp
@@ -54,9 +54,9 @@
 layout (triangle_strip, max_vertices = 3) out;
 void main()
 {
-    gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
     for (int i = 0; i < 3; i++)
     {
+        gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT;
         gl_Position = gl_in[i].gl_Position;
         EmitVertex();
     }
@@ -73,10 +73,12 @@
     // Emit red color if ShadingRateEXT == gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT
     if (gl_ShadingRateEXT == 5) {
         fragColor = vec4(1.0, 0.0, 0.0, 1.0); // red
-    } else if (gl_ShadingRateEXT == 0) {
+    }
+    // ShadingRateEXT == 0 indicates 1x1 shading rate
+    else if (gl_ShadingRateEXT == 0) {
         fragColor = u_color;
-    }else {
-        fragColor = vec4(0.0, 1.0, 0.0, 1.0);
+    } else {
+        fragColor = vec4(0.0, 1.0, 0.0, 1.0); // green
     }
 })";
 
@@ -184,11 +186,16 @@
     ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_fragment_shading_rate_primitive"));
     ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_geometry_shader"));
 
-    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+    // Yellow
+    glClearColor(1.0f, 1.0f, 0.0f, 1.0f);
     glClear(GL_COLOR_BUFFER_BIT);
 
     ANGLE_GL_PROGRAM(drawShadingRateProgram, kSimpleShadingRateVS, kSimpleShadingRateFS);
     glUseProgram(drawShadingRateProgram);
+    GLint colorLoc = glGetUniformLocation(drawShadingRateProgram, "u_color");
+    ASSERT_NE(colorLoc, -1);
+    glUniform4f(colorLoc, 0, 0, 1, 1);  // blue
+
     // Set 1x1 shading rate and KEEP combinerOps.
     glShadingRateEXT(GL_SHADING_RATE_1X1_PIXELS_EXT);
     glShadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT,
@@ -196,13 +203,19 @@
     // Verify draw call with 1x1 shading rate.
     drawQuad(drawShadingRateProgram, essl1_shaders::PositionAttrib(), 0.5f);
     ASSERT_GL_NO_ERROR();
-    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    // GL_SHADING_RATE_1X1_PIXELS_EXT -> gl_ShadingRateEXT = 0
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
 
     // Compile PrimitiveShadingRateVS + FS and use this program
     ANGLE_GL_PROGRAM(primitiveShadingRateVSProgram, kSimplePrimitiveShadingRateVS,
                      kSimpleShadingRateFS);
     glUseProgram(primitiveShadingRateVSProgram);
-    // Set REPLACE combinerOp0.
+    colorLoc = glGetUniformLocation(primitiveShadingRateVSProgram, "u_color");
+    ASSERT_NE(colorLoc, -1);
+    glUniform4f(colorLoc, 0, 0, 1, 1);  // blue
+
+    // Set 2x2 shading rate and REPLACE combinerOps.
+    glShadingRateEXT(GL_SHADING_RATE_2X2_PIXELS_EXT);
     glShadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT,
                                 GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT);
     // Verify draw call with 2x2 primitive shading rate.
@@ -215,6 +228,9 @@
     ANGLE_GL_PROGRAM_WITH_GS(primitiveShadingRateGSProgram, kSimpleShadingRateVS,
                              kSimplePrimitiveShadingRateGS, kSimpleShadingRateFS);
     glUseProgram(primitiveShadingRateGSProgram);
+    colorLoc = glGetUniformLocation(primitiveShadingRateGSProgram, "u_color");
+    ASSERT_NE(colorLoc, -1);
+    glUniform4f(colorLoc, 0, 0, 1, 1);  // blue
 
     // Verify draw call with 2x2 primitive shading rate with GS.
     drawQuad(primitiveShadingRateGSProgram, essl1_shaders::PositionAttrib(), 0.5f);
@@ -227,7 +243,7 @@
                                 GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT);
     drawQuad(drawShadingRateProgram, essl1_shaders::PositionAttrib(), 0.5f);
     ASSERT_GL_NO_ERROR();
-    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
 }
 
 // The negative test of EXT_fragment_shading_rate
