   float farFromCenter = length(aDesiredPos - aPixel) - aRadius;
   float pixelInCircle = 1.00 - clamp(farFromCenter, 0.0, 1.0);
   return vec4(aColor, pixelInCircle);
-}
-
-// Draw a rectangle at aRect fill it with aColor. Only works on non-rotated
-// rects.
-vec4 drawRect(vec2 aPixel, vec4 aRect, vec3 aColor) {
-   // GLSL origin is bottom left, positive Y is up
-   bool inRect = (aRect.x <= aPixel.x) && (aPixel.x <= aRect.x + aRect.z) &&
-            (aPixel.y >= aRect.y) && (aPixel.y <= aRect.y + aRect.w);
-   return vec4(aColor, float(inRect));
 }
 
 vec4 draw_dotted_edge() {

    case PST_BOTTOM:
    case PST_TOP:
    {
      oFragColor = draw_dashed_edge(vLocalPos.x - vPieceRect.x, vPieceRect.w);
      break;
    }
    case PST_LEFT:
    case PST_RIGHT:
    {
      oFragColor = draw_dashed_edge(vLocalPos.y - vPieceRect.y, vPieceRect.z);
      break;
    }
  }


#endif

vec4 draw_dashed_edge(float position, float border_width, float pixels_per_fragment) {
  // TODO: Investigate exactly what FF does.
  float size = border_width * 3;
  float segment = floor(position / size);

  float alpha = alpha_for_solid_border(position,
                                       segment * size,
                                       (segment + 1) * size,
                                       pixels_per_fragment);

  if (mod(segment + 2, 2) == 0) {
    return vHorizontalColor * vec4(1, 1, 1, 1 - alpha);
  } else {
    return vHorizontalColor * vec4(1, 1, 1, alpha);
  }
}

void draw_dashed_border(vec2 local_pos, float distance_from_mix_line) {
