anchor.diff:  
   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);
  +mat3 MCAT02INV = mat3(1.096124,-0.278869,0.182745, 0.454369,0.473533,0.072098,  -0.009628,-0.005698,1.015326);
  +
  +// linear transform matrix for rgb = xyz * MsRGB
  +mat3 MsRGB = mat3(3.2406,-1.5372,-0.4986,         -0.9689,1.8758,0.0415,         0.0557,-0.2040,1.0570);
  +mat3 MsRGBINV = mat3(0.4124,0.3576,0.1805,         0.2126,0.7152,0.0722,         0.0193,0.1192,0.9505);
  +
  +// linear tranform matrix for lms_p = lms_c * MHPE = lms_c * (MH * MCAT02INV) 
  +mat3 MHPE = mat3(0.740979,0.218025,0.04101,        0.285353,0.624202,0.090445,  -0.0096276,-0.005698,1.015326);
  +mat3 MHPEINV = mat3(1.55915,-0.544723,-0.014445,  -0.71433,1.85031,-0.13598,     0.010776,0.0052188,0.984006);
  +
  +// linear tranform matrix for p2ab = lms_p * MP2AB 
  +mat3 MP2AB = mat3(2.0000,1.0000,0.05000,           1.0000,-1.0909,0.090909,     0.111111,0.111111,-0.222222);
  +mat3 MP2ABINV = mat3(0.32787,0.32145,0.20527,      0.32787,-0.63507,-0.18603,   0.327869,-0.15681,-4.490378);
  +
  +
  +///////////////////////// sRGB /////////////////////////////////////////
  +// fwd XYZ [0..100] -> RGB [0..1] 
  +// rev RGB [0..1] -> // XYZ [0..100] normalised to Y=100
  +
   // compand a linear RGB component c into a nonlinear space
   float fwd_sRGB(float c) {
   	return (float(c > 0.0031308) * 1.055 * pow(c, (1.0 / 2.4)) - 0.055 
  
positive.code: // convert xyz to sRGB linear then compand to sRGB
  vec4 fwd_xyz2rgb(vec4 color) {
  	vec3 xyz = vec3(color.x, color.y, color.z) / 100.0;
  	mat3 M = mat3(3.2406, -1.5372, -0.4986,   -0.9689, 1.8758, 0.0415,  0.0557, -0.2040, 1.0570);
  	vec3 rgb = xyz * M;
  	return vec4(fwd_sRGB(rgb.r), fwd_sRGB(rgb.g), fwd_sRGB(rgb.b), color.a);
  }
  
  
negative.code: vec4 rev_rgb2xyz(vec4 color) {
  	//Observer. = 2.0°, Illuminant = D65
  	vec3 rgb = vec3(rev_sRGB(color.r), rev_sRGB(color.g), rev_sRGB(color.b)) * 100.0;							
  	return vec4(rgb * MsRGBINV, color.a);
  }
  
  ///////////////////////// Lab/lch /////////////////////////////////////////
  // fwd XYZ [0..100] -> L[0..100] AB[-128..+128] -> L[0..100] C[0..100] H[0..360]
  // rev L[0..100] C[0..100] H[0..360] -> L[0..100] AB[-128..+128] -> XYZ [0..100]
  
  // convert xyz component to lab component
  float fwd_lab(float c) {
  