anchor.diff:  	// This ends up softening glow without negatively affecting edge smoothness much.
   	alphaFactor = pow(alphaFactor, g_AlphaExponent);
   
  -	float borderStart = 1.0 + fadeStart - g_BorderThickness;
  -	float colourWeight = min(borderStart - dist, 1.0);
  +	highp float borderStart = 1.0 + fadeStart - g_BorderThickness;
  +	lowp float colourWeight = min(borderStart - dist, 1.0);
  +	
   	if (colourWeight <= 0.0)
   	{
   		gl_FragColor = toSRGB(vec4(g_BorderColour.rgb, g_BorderColour.a * alphaFactor));
  
positive.code: #ifdef GL_ES
  	precision mediump float;
  #else
  	// Since glsl 1.1 doesn't define precision qualifiers but GL_ES does, 
  	// Define them as nothing to avoid compilation issues.
  	#define highp
  #endif
  
  #include "sh_Utils.h"
  
  varying vec2 v_MaskingPosition;
  varying vec4 v_Colour;
  varying vec2 v_TexCoord;
  varying vec4 v_TexRect;
  varying vec2 v_BlendRange;
  
  uniform sampler2D m_Sampler;
  uniform float g_CornerRadius;
  uniform vec4 g_MaskingRect;
  uniform float g_BorderThickness;
  uniform vec4 g_BorderColour;
  
  uniform float g_MaskingBlendRange;
  
  uniform float g_AlphaExponent;
  
  uniform vec2 g_EdgeOffset;
  
  uniform bool g_DiscardInner;
  uniform float g_InnerCornerRadius;
  
  float distanceFromRoundedRect(vec2 offset, float radius)
  {
  	// highp precision is required for calculations that operate on position
  	// screen coordinates may need higher precision on higher resolution phones.
  	highp vec2 maskingPosition = v_MaskingPosition + offset;
  
  	// Compute offset distance from masking rect in masking space.
  
negative.code: 		bottomRightOffset + vec2(radius),
  		topLeftOffset + vec2(radius));
  
  	highp float maxDist = max(distanceFromShrunkRect.x, distanceFromShrunkRect.y);
  
  	// Inside the shrunk rectangle
  	if (maxDist <= 0.0)
  