 
     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;
-    }
+    V_END_RADIUS = gradient.center_start_end_radius.w;
 
     // Transform all coordinates by the y scale so the
     // fragment shader can work with circles

    vec2 pos = mod(V_POS, V_REPEATED_SIZE);
#endif

    // Solve for t in length(pd) = V_START_RADIUS + t * rd
    vec2 pd = pos - V_CENTER;
    float offset = (length(pd) - V_START_RADIUS) * V_RADIUS_SCALE;

    vec4 color = sample_gradient(V_GRADIENT_ADDRESS,
                                 offset,

#undef V_GRADIENT_ADDRESS
#undef V_CENTER
#undef V_START_RADIUS
#undef V_END_RADIUS
#undef V_REPEATED_SIZE
#undef V_GRADIENT_REPEAT
#undef V_POS
