 #undef V_GRADIENT_ADDRESS
 #undef V_CENTER
 #undef V_START_RADIUS
-#undef V_END_RADIUS
+#undef V_RADIUS_SCALE
 #undef V_REPEATED_SIZE
 #undef V_GRADIENT_REPEAT
 #undef V_POS


#define V_CENTER            flat_varying_vec4_0.xy
#define V_START_RADIUS      flat_varying_vec4_0.z
#define V_END_RADIUS        flat_varying_vec4_0.w

#define V_REPEATED_SIZE     flat_varying_vec4_1.xy
#define V_GRADIENT_REPEAT   flat_varying_vec4_1.z


    V_CENTER = gradient.center_start_end_radius.xy;
    V_START_RADIUS = gradient.center_start_end_radius.z;
    if (gradient.center_start_end_radius.z != gradient.center_start_end_radius.w) {
      // Store 1/rd where rd = end_radius - start_start
      V_RADIUS_SCALE = 1.0 / (gradient.center_start_end_radius.w - gradient.center_start_end_radius.z);
    } else {
      // If rd = 0, we can't get its reciprocal. Instead, just use a zero scale.
      V_RADIUS_SCALE = 0.0;
    }

    // Transform all coordinates by the y scale so the
    // fragment shader can work with circles
