anchor.diff:  }
   
   void main( void ) {
  -	vec4 lch = fwd_rgb2jch(texture2D(u_tex0, v_uv));
  +	vec4 lch = fwd_rgb2jch(texture2D(u_tex0, v_uv), D65, 100.0, 20.0, 1.0);
   
   	if (u_numEdges > 9.0) {					// u_numEdges 0 = no edges, 10 = 1 edge, 20 = 2 edges, 30 = 3 edges, etc.
   		float dx = 1000.0 / (u_numEdges);		// dx is width of grey bands 100 for 1 edge, 50 for 2 edges, 33 for 3 edges, 25 for 4 edges, etc
  
positive.code: uniform sampler2D u_tex0;
  varying vec2 v_uv;
  
  vec3 D65 = vec3(95.047, 100.000, 108.883);
  
  // linear transform matrix for lms = xyz * MCAT02
  mat3 MCAT02 = mat3(0.7328,0.4296,-0.1624,         -0.7036,1.6975,0.0061,         0.0030,0.0136,0.9834);
  
negative.code: 	return vec4(J, C, h, color.a);
  }
   
  // convert color jch to xyz given viewing conditions xyz_w, La, Yb and S
  vec4 rev_jch2xyz(vec4 color, vec3 xyz_w, float La, float Yb, float S) {
  	vec3 FcN = calc_FcN(S);
      vec4 DF = calc_DF(xyz_w, La, FcN); 
      vec4 ANZn = calc_ANZn(xyz_w, La, Yb, DF); 
  
      float J = color.x; float C = color.y; float h_rad = radians(color.z);
      float A = ANZn.x * pow(J / 100.0, 1.0 / FcN.y / ANZn.z);
  