determine one extra digit, chop it off

I'm at the point with this now that I'm probably way too deep.  I think
what we have now is probably fine, except that the numbers are sometimes
misleading because they're truncated.

This is the same idea as before, but with the truncation moved one digit
further down.  That way we're kind of still looking at the same number
of digits we think we need to properly represent the number (round
trip).

Change-Id: Iee841607284b4d9f8e848937377ee04a23bf4edb
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/259829
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/profiles/color.org/Lower_Left.icc.txt b/profiles/color.org/Lower_Left.icc.txt
index fd378cb..d43e36e 100644
--- a/profiles/color.org/Lower_Left.icc.txt
+++ b/profiles/color.org/Lower_Left.icc.txt
@@ -22,10 +22,10 @@
 Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167131 0.000167131 0.000167131 |
- XYZ : | 0.3851165 0.1430511 0.4360351 |
-       | 0.716903 0.0606079 0.222488 |
-       | 0.0970611 0.7139129 0.01391601 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.38511657 0.14305114 0.43603515 |
+       | 0.7169036 0.06060791 0.2224884 |
+       | 0.09706115 0.71391296 0.013916015 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	291454 6280c2 30375f 2a2706 3a2e07 4b8133 281288
 	70ac1c 1c2510 69a32b 71b087 304356 261642 776813
diff --git a/profiles/color.org/Lower_Right.icc.txt b/profiles/color.org/Lower_Right.icc.txt
index 60b0665..7afd5ab 100644
--- a/profiles/color.org/Lower_Right.icc.txt
+++ b/profiles/color.org/Lower_Right.icc.txt
@@ -22,10 +22,10 @@
 Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167131 0.000167131 0.000167131 |
- XYZ : | 0.609741 0.2052764 0.1491851 |
-       | 0.3111114 0.625671 0.0632171 |
-       | 0.01947021 0.0608673 0.744567 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.6097412 0.20527648 0.14918518 |
+       | 0.31111145 0.6256713 0.06321716 |
+       | 0.019470214 0.06086731 0.7445678 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	204d31 93ce15 416213 1f1032 24134e 755408 2b7921
 	914d31 211911 8e5828 aeab10 4a5e08 1f3e2b 522d94
diff --git a/profiles/color.org/Upper_Left.icc.txt b/profiles/color.org/Upper_Left.icc.txt
index 88819ed..264ef24 100644
--- a/profiles/color.org/Upper_Left.icc.txt
+++ b/profiles/color.org/Upper_Left.icc.txt
@@ -32,10 +32,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047836 0.02288818 -0.05020141 |
-       | 0.02954101 0.9905090 -0.01707458 |
-       | -0.00924682 0.01507568 0.7517242 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0478363 0.022888183 -0.050201416 |
+       | 0.029541015 0.99050903 -0.017074585 |
+       | -0.009246826 0.015075683 0.75172424 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	003012 e8ff0c 335505 00000c 000032 5a3300 2d9d18
 	8c3b0f 000000 884609 dcd000 274100 0c230c 3510c0
diff --git a/profiles/color.org/Upper_Right.icc.txt b/profiles/color.org/Upper_Right.icc.txt
index d8de9b8..dcb13b1 100644
--- a/profiles/color.org/Upper_Right.icc.txt
+++ b/profiles/color.org/Upper_Right.icc.txt
@@ -34,10 +34,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047836 0.02288818 -0.05020141 |
-       | 0.02954101 0.9905090 -0.01707458 |
-       | -0.00924682 0.01507568 0.7517242 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0478363 0.022888183 -0.050201416 |
+       | 0.029541015 0.99050903 -0.017074585 |
+       | -0.009246826 0.015075683 0.75172424 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	050217 c9c1ff 434d9d 273100 312b00 a1ff8a 0d054b
 	d3f938 2a480b bfe26d edffff 6592a8 0b091c a5670c
diff --git a/profiles/color.org/sRGB2014.icc.txt b/profiles/color.org/sRGB2014.icc.txt
index 09d92a2..8baee7f 100644
--- a/profiles/color.org/sRGB2014.icc.txt
+++ b/profiles/color.org/sRGB2014.icc.txt
@@ -32,13 +32,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4360656 0.385147 0.143066 |
-       | 0.222488 0.7168731 0.0606079 |
-       | 0.01391601 0.09707641 0.7140960 |
-CHAD : | 1.047912 0.0229339 -0.05020141 |
-       | 0.0296020 0.9904632 -0.01707458 |
-       | -0.00924682 0.01506042 0.751785 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.43606567 0.3851470 0.1430664 |
+       | 0.2224884 0.71687316 0.06060791 |
+       | 0.013916015 0.097076416 0.71409606 |
+CHAD : | 1.0479126 0.02293396 -0.050201416 |
+       | 0.02960205 0.99046325 -0.017074585 |
+       | -0.009246826 0.015060424 0.7517852 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt b/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
index 6c88821..a358f74 100644
--- a/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
+++ b/profiles/color.org/sRGB_ICC_v4_Appearance.icc.txt
@@ -32,10 +32,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047912 0.0229339 -0.05020141 |
-       | 0.0296020 0.9904632 -0.01707458 |
-       | -0.00924682 0.01506042 0.751785 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0479126 0.02293396 -0.050201416 |
+       | 0.02960205 0.99046325 -0.017074585 |
+       | -0.009246826 0.015060424 0.7517852 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2f4e2d 92c11a 486216 190e2f 1d1048 5c4609 3e711e
 	653727 1d1711 6b4623 9c9b13 4a5b0b 2b4229 3a2375
diff --git a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
index 13de97d..f807131 100644
--- a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
+++ b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
@@ -32,10 +32,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.048019 0.02301025 -0.050170 |
-       | 0.02972412 0.990341 -0.01707458 |
-       | -0.00923156 0.01028442 0.7521362 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0480194 0.023010253 -0.0501709 |
+       | 0.029724121 0.9903411 -0.017074585 |
+       | -0.009231567 0.010284423 0.75213623 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	0f2b1c 97bd13 445b15 190e29 1d113f 5f4706 1d4a14
 	6b3928 1f1912 764e26 b3a80d 424e05 1d3325 3b236d
diff --git a/profiles/fuzz/direct_fit_not_invertible.icc.txt b/profiles/fuzz/direct_fit_not_invertible.icc.txt
index b19f7c9..2b38073 100644
--- a/profiles/fuzz/direct_fit_not_invertible.icc.txt
+++ b/profiles/fuzz/direct_fit_not_invertible.icc.txt
@@ -10,9 +10,9 @@
 rTRC : 16-bit table with 3 entries
 gTRC : 16-bit table with 3 entries
 bTRC : 16-bit table with 3 entries
- XYZ : | 0.961425 0 0 |
-       | 0 1.008300 0 |
-       | 0 0 0.8168945 |
+ XYZ : | 0.9614257 0. 0. |
+       | 0. 1.0083007 0. |
+       | 0. 0. 0.81689453 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1f201a 1f201a 1f201a 1f201a 1f201a 1f201a 1f201a
 	1f201a 1f201a 1f201a 1f201a 1f201a 1f201a 1f201a
diff --git a/profiles/fuzz/fit_pq.icc.txt b/profiles/fuzz/fit_pq.icc.txt
index ec47ffc..b036552 100644
--- a/profiles/fuzz/fit_pq.icc.txt
+++ b/profiles/fuzz/fit_pq.icc.txt
@@ -16,9 +16,9 @@
 Best : 1, 1, 7.629395e-06, 0.003997864, 0.5, -0.4979935, 0 (D-gap: 1.52283e-05) (f(1) = 0.502007)
 Inv  : 1, 1, 0.4979935, 250.1336, 0.001998932, 0, -0 (D-gap: -1.90735e-06) (f(1) = 1.49799)
 Best Error: | 0.745052 0.745052 0.745052 |
- XYZ : | 0.9579925 0 0 |
-       | 0 1.002731 0 |
-       | 0 0 0.8164062 |
+ XYZ : | 0.95799255 0. 0. |
+       | 0. 1.0027313 0. |
+       | 0. 0. 0.81640625 |
 252 random bytes transformed to linear XYZD50 bytes:
 	00cf02 f4ff00 19e300 000023 000088 f40000 00ff00
 	f4000f 000000 f40000 f4ff00 66b700 007f00 6200d0
diff --git a/profiles/fuzz/inf_a.icc.txt b/profiles/fuzz/inf_a.icc.txt
index 54084f3..27ac089 100644
--- a/profiles/fuzz/inf_a.icc.txt
+++ b/profiles/fuzz/inf_a.icc.txt
@@ -20,9 +20,9 @@
 Best : 0.07488938, 0.007860422, -3.070464e-05, 0.1250019, 0.00390625, -0.1817474, 0 (D-gap: 5.7213e-05) (f(1) = 0.513702)
 Inv  : 13.35303, 1.437515, 0.2612647, 7.999878, 0.0004882887, 0.003726959, -0 (D-gap: -0.000179274) (f(1) = 1181.82)
 Best Error: | 1181.7 1181.7 1181.7 |
- XYZ : | 0.961425 0 0 |
-       | 0 1.000488 0 |
-       | 0 0 0.8247070 |
+ XYZ : | 0.9614257 0. 0. |
+       | 0. 1.0004882 0. |
+       | 0. 0. 0.82470703 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1f2074 f5201a 81201a 1fe37b 97201a 3c201a 0020c3
 	1f20cd 1f20b1 1fec67 ebffbd ef771a 1f741a ef202f
diff --git a/profiles/fuzz/infinite_roundtrip.icc.txt b/profiles/fuzz/infinite_roundtrip.icc.txt
index f95e450..70c1e55 100644
--- a/profiles/fuzz/infinite_roundtrip.icc.txt
+++ b/profiles/fuzz/infinite_roundtrip.icc.txt
@@ -19,9 +19,9 @@
 rTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
 gTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
 bTRC : 1.996582, 8224.125, 8224.125, 8224.125, 0, 8224.125, 0 (f(1) = 2.61714e+08)
- XYZ : | 8224.12 8224.12 8224.12 |
-       | 8224.12 8224.12 8224.12 |
-       | 8224.12 8224.12 8224.12 |
+ XYZ : | 8224.125 8224.125 8224.125 |
+       | 8224.125 8224.125 8224.125 |
+       | 8224.125 8224.125 8224.125 |
  !!! This does not appear to use a D50 whitepoint, rather [24672.4 24672.4 24672.4]
 252 random bytes transformed to linear XYZD50 bytes:
 	ffffff ffffff ffffff ffffff ffffff ffffff ffffff
diff --git a/profiles/fuzz/inverse_tf_adb_negative.icc.txt b/profiles/fuzz/inverse_tf_adb_negative.icc.txt
index 7c073a5..733c52e 100644
--- a/profiles/fuzz/inverse_tf_adb_negative.icc.txt
+++ b/profiles/fuzz/inverse_tf_adb_negative.icc.txt
@@ -23,9 +23,9 @@
   ~= : 11.04649, 1, -0.0009775171, 0.4995193, 0.0009775171, 0.0003890991, 0 (Max error: 1) (D-gap: -9.91896e-05) (f(1) = 0.989616)
 bTRC : 16-bit table with 1024 entries
   ~= : 11.04649, 1, -0.0009775171, 0.4995193, 0.0009775171, 0.0003890991, 0 (Max error: 1) (D-gap: -9.91896e-05) (f(1) = 0.989616)
- XYZ : | 8224.12 8224.12 8224.12 |
-       | 8224.12 8224.12 8224.12 |
-       | -0.003417968 8224.12 8224.12 |
+ XYZ : | 8224.125 8224.125 8224.125 |
+       | 8224.125 8224.125 8224.125 |
+       | -0.0034179687 8224.125 8224.125 |
  !!! This does not appear to use a D50 whitepoint, rather [24672.4 24672.4 16448.2]
 252 random bytes transformed to linear XYZD50 bytes:
 	ffffff ffffff ffffff ffffff ffffff ffffff ffffff
diff --git a/profiles/fuzz/inverse_tf_huge_g.icc.txt b/profiles/fuzz/inverse_tf_huge_g.icc.txt
index e72fd23..f0c12fc 100644
--- a/profiles/fuzz/inverse_tf_huge_g.icc.txt
+++ b/profiles/fuzz/inverse_tf_huge_g.icc.txt
@@ -18,9 +18,9 @@
 Best : 2.985061, 1, -1.594611e-05, 41.95129, 0.02380952, 0.9988265, 0 (D-gap: 4.17233e-07) (f(1) = 1.99879)
 Inv  : 0.3350015, 1, -0.9988265, 0.02383717, 0.9988403, 3.814697e-06, -0 (D-gap: -0.000247927) (f(1) = 0.104296)
 Best Error: | 0.97938 0.97938 0.97938 |
- XYZ : | 0.964202 0 0 |
-       | 0 1 0 |
-       | 0 0 0.824905 |
+ XYZ : | 0.9642028 0. 0. |
+       | 0. 1. 0. |
+       | 0. 0. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	b3701f c2dc2e 24c145 242c1f 24341e c6251f 8bd01f
 	cf6d1f 24251f cd251f d1c91f 622523 55b31f 4672ad
diff --git a/profiles/fuzz/inverse_tf_not_invertible.icc.txt b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
index 1daabad..2ec3cab 100644
--- a/profiles/fuzz/inverse_tf_not_invertible.icc.txt
+++ b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
@@ -24,10 +24,10 @@
 Best : 1.403709, 0.9121704, 0.2242268, 0.07707816, 0.04078144, -0.1487198, 0 (D-gap: 0.00021739) (f(1) = 1.04768)
 Inv  : 0.7123984, 1.137833, 0.1692182, 12.97384, 0.003143358, -0.2457199, -0 (D-gap: -0.000215951) (f(1) = 0.964401)
 Best Error: | 0.662578 0.662578 0.662578 |
- XYZ : | 0.4360656 0.385070 0.1430511 |
-       | 0.2225036 0.7168731 0.0606079 |
-       | 0.01391601 0.0970611 0.7139892 |
-WTPT : | 0.950500 1 1.089096 |
+ XYZ : | 0.43606567 0.3850708 0.14305114 |
+       | 0.22250366 0.71687316 0.06060791 |
+       | 0.013916015 0.09706115 0.71398925 |
+WTPT : | 0.9505004 1. 1.0890960 |
 252 random bytes transformed to linear XYZD50 bytes:
 	619c65 8eac17 6b762f 361b5d 452e84 736f0d 538b46
 	7e505b 453d30 866a50 a1a314 8ca915 5c825b 6e4b91
diff --git a/profiles/fuzz/nan_s.icc.txt b/profiles/fuzz/nan_s.icc.txt
index 9319c69..bb8bf43 100644
--- a/profiles/fuzz/nan_s.icc.txt
+++ b/profiles/fuzz/nan_s.icc.txt
@@ -16,9 +16,9 @@
 Best : 2.025319, 1, 2.325047e-06, 206.8078, 0.00389105, 0.8047485, 0 (D-gap: 6.19888e-05) (f(1) = 1.80476)
 Inv  : 0.4937495, 1, -0.8046997, 0.004835406, 0.8046997, -3.051758e-05, -0 (D-gap: -0.00392157) (f(1) = 0.446409)
 Best Error: | 0.999377 0.999377 0.999377 |
- XYZ : | 0.9573974 0 0 |
-       | 0 1.008300 0 |
-       | 0 0 0.816162 |
+ XYZ : | 0.95739746 0. 0. |
+       | 0. 1.0083007 0. |
+       | 0. 0. 0.8161621 |
 252 random bytes transformed to linear XYZD50 bytes:
 	0d201a f42100 1fff1a 1f201a 1f001a 1f201a ee201a
 	33201a 1f201a 1f201a 1f781a 48202c 1f20c8 1f2044
diff --git a/profiles/fuzz/negative_a_plus_b.icc.txt b/profiles/fuzz/negative_a_plus_b.icc.txt
index 11a850b..581524d 100644
--- a/profiles/fuzz/negative_a_plus_b.icc.txt
+++ b/profiles/fuzz/negative_a_plus_b.icc.txt
@@ -10,9 +10,9 @@
 rTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
 gTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
 bTRC : 6.103516e-05, 2067, -18428.55, 0, 8.915603, -28305.75, -28305.75 (D-gap: 0) (f(1) = -28305.8)
- XYZ : | 0.962387 0 0 |
-       | 0 1.008392 0 |
-       | 0 0 0.828750 |
+ XYZ : | 0.9623870 0. 0. |
+       | 0. 1.0083923 0. |
+       | 0. 0. 0.8287506 |
 252 random bytes transformed to linear XYZD50 bytes:
 	000000 000000 000000 000000 000000 000000 000000
 	000000 000000 000000 000000 000000 000000 000000
diff --git a/profiles/fuzz/negative_a_when_inverted.icc.txt b/profiles/fuzz/negative_a_when_inverted.icc.txt
index d70efc1..a472f8c 100644
--- a/profiles/fuzz/negative_a_when_inverted.icc.txt
+++ b/profiles/fuzz/negative_a_when_inverted.icc.txt
@@ -16,9 +16,9 @@
 Best : 3.471169, 1, -7.677823e-06, 10.00992, 0.05, 0.500597, 0 (D-gap: 0.000131547) (f(1) = 1.50057)
 Inv  : 0.2880874, 1, -0.5004959, 0.09990092, 0.5004959, -2.288818e-05, -0 (D-gap: -0.0500229) (f(1) = 0.81871)
 Best Error: | 0.987463 0.987463 0.987463 |
- XYZ : | 0.9575195 0 0 |
-       | 0 1.000488 0 |
-       | 0 0 0.8202972 |
+ XYZ : | 0.95751953 0. 0. |
+       | 0. 1.0004882 0. |
+       | 0. 0. 0.82029724 |
 252 random bytes transformed to linear XYZD50 bytes:
 	4d201a 1f571a 1f201a 00201a 002074 1f201a 2d2000
 	1f201a 330d8d 1f001a 4d201a 1f2063 1f201a 1f201a
diff --git a/profiles/fuzz/one_d_clut.icc.txt b/profiles/fuzz/one_d_clut.icc.txt
index 38981c3..c796472 100644
--- a/profiles/fuzz/one_d_clut.icc.txt
+++ b/profiles/fuzz/one_d_clut.icc.txt
@@ -32,10 +32,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047836 0.02288818 -0.05020141 |
-       | 0.02954101 0.9905090 -0.01707458 |
-       | -0.00924682 0.01507568 0.7517242 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0478363 0.022888183 -0.050201416 |
+       | 0.029541015 0.99050903 -0.017074585 |
+       | -0.009246826 0.015075683 0.75172424 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	000000 000800 000400 000000 000000 000800 000000
 	000800 000000 000800 000800 000600 000000 000600
diff --git a/profiles/fuzz/polytf_nan_after_update.icc.txt b/profiles/fuzz/polytf_nan_after_update.icc.txt
index a601d7d..686138b 100644
--- a/profiles/fuzz/polytf_nan_after_update.icc.txt
+++ b/profiles/fuzz/polytf_nan_after_update.icc.txt
@@ -22,9 +22,9 @@
   ~= : 3.045648, 1, -5.939649e-05, 32, 0.003921569, 0.1258659, 0 (Max error: 0.772618) (D-gap: 0.000375792) (f(1) = 1.12568)
 bTRC : 16-bit table with 256 entries
   ~= : 3.045648, 1, 0.0003229971, 254.1323, 0.003921569, 0.9965984, 0 (Max error: 0.975963) (D-gap: 1.13249e-06) (f(1) = 1.99757)
- XYZ : | 8224.12 8224.12 8224.12 |
-       | 8224.12 8224.12 8224.12 |
-       | 8224.12 8224.12 8224.12 |
+ XYZ : | 8224.125 8224.125 8224.125 |
+       | 8224.125 8224.125 8224.125 |
+       | 8224.125 8224.125 8224.125 |
  !!! This does not appear to use a D50 whitepoint, rather [24672.4 24672.4 24672.4]
 252 random bytes transformed to linear XYZD50 bytes:
 	ffffff ffffff ffffff ffffff ffffff ffffff ffffff
diff --git a/profiles/fuzz/zero_g.icc.txt b/profiles/fuzz/zero_g.icc.txt
index 1615baa..d450232 100644
--- a/profiles/fuzz/zero_g.icc.txt
+++ b/profiles/fuzz/zero_g.icc.txt
@@ -10,9 +10,9 @@
 rTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 gTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 bTRC : 0, 1, 0, 0, 0, 0, 0 (f(1) = 1)
- XYZ : | 0.961425 0 0 |
-       | 0 1.000488 0 |
-       | 0 0 0.8325195 |
+ XYZ : | 0.9614257 0. 0. |
+       | 0. 1.0004882 0. |
+       | 0. 0. 0.83251953 |
 252 random bytes transformed to linear XYZD50 bytes:
 	f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4
 	f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4 f5ffd4
diff --git a/profiles/misc/AdobeColorSpin.icc.txt b/profiles/misc/AdobeColorSpin.icc.txt
index 7545886..7da2984 100644
--- a/profiles/misc/AdobeColorSpin.icc.txt
+++ b/profiles/misc/AdobeColorSpin.icc.txt
@@ -21,10 +21,10 @@
 Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167131 0.000167131 0.000167131 |
- XYZ : | 0.2052764 0.1491851 0.609741 |
-       | 0.625671 0.0632171 0.3111114 |
-       | 0.0608673 0.744552 0.01947021 |
-WTPT : | 0.9504 1 1.089050 |
+ XYZ : | 0.20527648 0.14918518 0.6097412 |
+       | 0.6256713 0.06321716 0.31111145 |
+       | 0.06086731 0.7445526 0.019470214 |
+WTPT : | 0.95047 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	341958 4873c4 283361 302a05 463407 2c712e 2e158e
 	539d14 182310 4b9424 489b84 223c56 2e1a45 8a7111
diff --git a/profiles/misc/AdobeRGB.icc.txt b/profiles/misc/AdobeRGB.icc.txt
index 60b0665..7afd5ab 100644
--- a/profiles/misc/AdobeRGB.icc.txt
+++ b/profiles/misc/AdobeRGB.icc.txt
@@ -22,10 +22,10 @@
 Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167131 0.000167131 0.000167131 |
- XYZ : | 0.609741 0.2052764 0.1491851 |
-       | 0.3111114 0.625671 0.0632171 |
-       | 0.01947021 0.0608673 0.744567 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.6097412 0.20527648 0.14918518 |
+       | 0.31111145 0.6256713 0.06321716 |
+       | 0.019470214 0.06086731 0.7445678 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	204d31 93ce15 416213 1f1032 24134e 755408 2b7921
 	914d31 211911 8e5828 aeab10 4a5e08 1f3e2b 522d94
diff --git a/profiles/misc/Apple_Color_LCD.icc.txt b/profiles/misc/Apple_Color_LCD.icc.txt
index e222100..7b57735 100644
--- a/profiles/misc/Apple_Color_LCD.icc.txt
+++ b/profiles/misc/Apple_Color_LCD.icc.txt
@@ -33,13 +33,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4443359 0.379440 0.1404113 |
-       | 0.2247619 0.726165 0.04907226 |
-       | 0.005477905 0.0779724 0.741455 |
-CHAD : | 1.048614 0.0233154 -0.05033874 |
-       | 0.03018188 0.9900207 -0.0171356 |
-       | -0.00921630 0.01502990 0.7517242 |
-WTPT : | 0.9495544 1 1.089019 |
+ XYZ : | 0.44433593 0.3794403 0.14041137 |
+       | 0.22476196 0.7261657 0.049072265 |
+       | 0.0054779052 0.07797241 0.7414550 |
+CHAD : | 1.0486145 0.02331543 -0.050338745 |
+       | 0.030181884 0.99002075 -0.01713562 |
+       | -0.009216308 0.015029907 0.75172424 |
+WTPT : | 0.94955444 1. 1.0890197 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d918 4b6715 1a0d31 1e104c 5f4907 4c8a24
 	6d3b2e 1d1711 6f4725 a2a510 4d6009 2c452c 442491
diff --git a/profiles/misc/Apple_Wide_Color.icc.txt b/profiles/misc/Apple_Wide_Color.icc.txt
index c98d8e5..75d73d0 100644
--- a/profiles/misc/Apple_Wide_Color.icc.txt
+++ b/profiles/misc/Apple_Wide_Color.icc.txt
@@ -31,10 +31,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047805 0.02288818 -0.050170 |
-       | 0.02952575 0.9905090 -0.01705932 |
-       | -0.00924682 0.01506042 0.7519073 |
-WTPT : | 0.964202 1 0.8251037 |
+CHAD : | 1.0478057 0.022888183 -0.0501709 |
+       | 0.029525756 0.99050903 -0.017059326 |
+       | -0.009246826 0.015060424 0.75190734 |
+WTPT : | 0.9642028 1. 0.82510376 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2c562d a2d713 4b6615 1a0e30 1e114a 614a06 3d8912
 	763f31 1c1711 734b27 a6a90d 4c5f06 2b442b 452790
diff --git a/profiles/misc/BenQ_GL2450.icc.txt b/profiles/misc/BenQ_GL2450.icc.txt
index 072e36a..02333f4 100644
--- a/profiles/misc/BenQ_GL2450.icc.txt
+++ b/profiles/misc/BenQ_GL2450.icc.txt
@@ -29,11 +29,11 @@
 Best : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (f(1) = 1.00362)
 Inv  : 0.5017281, 0.9963799, 1.520355e-05, 0, 0, -2.288818e-05, 0 (f(1) = 0.998169)
 Best Error: | 0.00890554 0.00890554 0.00890554 |
- XYZ : | 0.3883972 0.4022979 0.2014007 |
-       | 0.1938934 0.741104 0.06509399 |
-       | 0.01029968 0.06120300 1.014602 |
+ XYZ : | 0.38839721 0.40229797 0.20140075 |
+       | 0.19389343 0.7411041 0.065093994 |
+       | 0.010299682 0.061203002 1.0146026 |
  !!! This does not appear to use a D50 whitepoint, rather [0.992096 1.00009 1.08611]
-WTPT : | 0.952499 1 1.086105 |
+WTPT : | 0.9524993 1. 1.0861053 |
 252 random bytes transformed to linear XYZD50 bytes:
 	406149 a5da17 54711b 20104c 281372 5d4c08 569330
 	693848 221b1c 6d483a 9ea810 536909 384f41 522acd
diff --git a/profiles/misc/BenQ_RL2455.icc.txt b/profiles/misc/BenQ_RL2455.icc.txt
index bec2519..af2d1d0 100644
--- a/profiles/misc/BenQ_RL2455.icc.txt
+++ b/profiles/misc/BenQ_RL2455.icc.txt
@@ -39,9 +39,9 @@
 Best : 2.201753, 0.9993706, 0.0006862282, 0.189456, 0.25, -9.918213e-05, 0 (D-gap: 7.38353e-06) (f(1) = 1.00002)
 Inv  : 0.4541835, 1.001389, 9.931985e-05, 5.27827, 0.047364, -0.0006790161, -0 (D-gap: -1.71512e-05) (f(1) = 0.999985)
 Best Error: | 0.0248302 0.0248302 0.0248302 |
- XYZ : | 0.465194 0.3559570 0.1430206 |
-       | 0.2318878 0.681533 0.0865631 |
-       | 0.00991821 0.0928649 0.7221069 |
+ XYZ : | 0.4651947 0.35595703 0.14302063 |
+       | 0.23188781 0.6815338 0.08656311 |
+       | 0.009918212 0.09286499 0.72210693 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
@@ -58,7 +58,7 @@
   ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (f(1) = 1) (~Identity)
   B2 : 16-bit table with 4096 entries
   ~= : 1, 1, 0, 0, 0, 0, 0 (Max error: 0.000332177) (f(1) = 1) (~Identity)
-WTPT : | 0.9642944 1 0.8251037 |
+WTPT : | 0.96429443 1. 0.82510376 |
 252 random bytes transformed to linear XYZD50 bytes:
 	192a1a 51680e 26320b 0d0818 100a26 312504 244213
 	391f17 0f0c08 3a2513 525109 272f06 152216 231648
diff --git a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
index 3e29339..b5f7c9d 100644
--- a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
@@ -31,7 +31,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.8697967 0.8993072 0.780502 |
+WTPT : | 0.86979675 0.89930725 0.7805023 |
 252 random bytes transformed to linear XYZD50 bytes:
 	0e1b20 392210 0b0c05 1a1218 1c1305 17210b 231e10
 	25233b 010102 0f1514 222e4a 492e20 2b2d1d 030202
diff --git a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
index 863e79a..cc1f954 100644
--- a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
@@ -35,7 +35,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.8448028 0.8762054 0.74569 |
+WTPT : | 0.84480285 0.87620544 0.745697 |
 252 random bytes transformed to linear XYZD50 bytes:
 	111c23 3a220f 0c0e06 1b131a 1c1305 18220c 251f11
 	27253e 000102 101615 232f4c 4a2f21 2c2e1e 030201
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index 8be192e..e4fe05b 100644
--- a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
@@ -36,7 +36,7 @@
   ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.000143707) (f(1) = 0.996105)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.844818 0.876190 0.745666 |
+WTPT : | 0.8448181 0.8761901 0.7456665 |
 252 random bytes transformed to linear XYZD50 bytes:
 	101b21 382210 0c0d06 1a1318 1b1205 18210c 231e11
 	26243c 000102 101514 232e4a 492f21 2c2d1e 030201
diff --git a/profiles/misc/Color_Spin_Gamma_18.icc.txt b/profiles/misc/Color_Spin_Gamma_18.icc.txt
index 4fffec4..47ab200 100644
--- a/profiles/misc/Color_Spin_Gamma_18.icc.txt
+++ b/profiles/misc/Color_Spin_Gamma_18.icc.txt
@@ -21,10 +21,10 @@
 Best : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.5553145, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000189781 0.000189781 0.000189781 |
- XYZ : | 0.3851165 0.1430358 0.4360504 |
-       | 0.716903 0.0606079 0.222488 |
-       | 0.0970611 0.7139129 0.01391601 |
-WTPT : | 0.9504 1 1.089050 |
+ XYZ : | 0.38511657 0.14303588 0.43605041 |
+       | 0.7169036 0.06060791 0.2224884 |
+       | 0.09706115 0.71391296 0.013916015 |
+WTPT : | 0.95047 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	341961 698bc4 3d476d 39360a 483d0c 538b40 2f1690
 	7bb521 29341a 75ad36 76b492 3a5265 322050 83781b
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index bf31633..fe7ddda 100644
--- a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
+++ b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
@@ -39,9 +39,9 @@
 Best : 2.330241, 1, -4.805624e-07, 1.546164e-09, 0.02352941, -0.0001525879, 0 (D-gap: 7.89479e-06) (f(1) = 0.999863)
 Inv  : 0.4291402, 1, 0.0001525879, 6.467617e+08, 3.638034e-11, 0, -0 (D-gap: -0.000505093) (f(1) = 1.00006)
 Best Error: | 0.100611 0.0871768 0.152941 |
- XYZ : | 0.4367370 0.3803253 0.147140 |
-       | 0.2176361 0.7298431 0.05252075 |
-       | 0.002655029 0.0644073 0.7578277 |
+ XYZ : | 0.43673706 0.38032531 0.1471405 |
+       | 0.21763610 0.72984314 0.052520752 |
+       | 0.0026550293 0.06440734 0.75782775 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 2049 entries
@@ -55,7 +55,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.949356 1 1.159179 |
+WTPT : | 0.9493560 1. 1.1591796 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1a2c18 526c09 263409 0c0619 0f0727 2f2402 264611
 	351b17 0e0b08 372313 505205 273004 162315 22124a
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index 4507797..7c07a47 100644
--- a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
+++ b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
@@ -20,10 +20,10 @@
 Best : 1.736919, 1, -3.613532e-07, 0.06290532, 0.02352941, 0, 0 (D-gap: 4.44008e-06) (f(1) = 1.00002)
 Inv  : 0.5757321, 1, -0, 15.89691, 0.001480125, -1.525879e-05, -0 (D-gap: -5.66281e-05) (f(1) = 0.999985)
 Best Error: | 0.000202144 0.000202144 0.000202144 |
- XYZ : | 0.964202 0 0 |
-       | 0 1 0 |
-       | 0 0 0.824905 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.9642028 0. 0. |
+       | 0. 1. 0. |
+       | 0. 0. 0.8249054 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	018a40 a7fc08 509115 320748 300a67 b74404 00ca26
 	dc1043 3d1e1d d43036 e4af05 668201 0f703a 6515ab
diff --git a/profiles/misc/Generic_RGB_Gamma_18.icc.txt b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
index 9811713..fea45d1 100644
--- a/profiles/misc/Generic_RGB_Gamma_18.icc.txt
+++ b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
@@ -23,13 +23,13 @@
 Best : 1.800781, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.5553145, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000189781 0.000189781 0.000189781 |
- XYZ : | 0.4542999 0.3533477 0.1566467 |
-       | 0.2419128 0.6736297 0.084457 |
-       | 0.01489257 0.0906372 0.71957 |
-CHAD : | 1.047882 0.02291870 -0.05020141 |
-       | 0.02957153 0.990493 -0.01705932 |
-       | -0.00923156 0.01507568 0.7516479 |
-WTPT : | 0.9504 1 1.089096 |
+ XYZ : | 0.45429992 0.35334777 0.15664672 |
+       | 0.24191284 0.67362976 0.0844574 |
+       | 0.014892578 0.09063720 0.719574 |
+CHAD : | 1.0478820 0.022918701 -0.050201416 |
+       | 0.029571533 0.9904937 -0.017059326 |
+       | -0.009231567 0.015075683 0.75164794 |
+WTPT : | 0.95047 1. 1.0890960 |
 252 random bytes transformed to linear XYZD50 bytes:
 	3b6141 a8d31f 5a751f 26173e 2b1b59 6d590c 4e8b31
 	78473d 2a241b 7d5834 a9ad17 5c6e0e 37523b 553797
diff --git a/profiles/misc/Gray_Gamma_22.icc.txt b/profiles/misc/Gray_Gamma_22.icc.txt
index 64a47cb..1f51051 100644
--- a/profiles/misc/Gray_Gamma_22.icc.txt
+++ b/profiles/misc/Gray_Gamma_22.icc.txt
@@ -17,10 +17,10 @@
 Best : 2.199219, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4547069, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167131 0.000167131 0.000167131 |
- XYZ : | 0.964202 0 0 |
-       | 0 1 0 |
-       | 0 0 0.824905 |
-WTPT : | 0.950500 1 1.089096 |
+ XYZ : | 0.9642028 0. 0. |
+       | 0. 1. 0. |
+       | 0. 0. 0.8249054 |
+WTPT : | 0.9505004 1. 1.0890960 |
 252 random bytes transformed to linear XYZD50 bytes:
 	00752e 96fb03 3c7c0b 210336 1f0455 a93001 00be18
 	d50831 2a1111 cb1e25 df9e02 516d00 075a2a 500ba1
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index a4f667e..d0a2213 100644
--- a/profiles/misc/HD_709.icc.txt
+++ b/profiles/misc/HD_709.icc.txt
@@ -33,13 +33,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.35896 0.446350 0.1588897 |
-       | 0.1959228 0.742843 0.0612335 |
-       | 0.00967407 0.04351806 0.7717132 |
-CHAD : | 1.045761 0.02182006 -0.04945373 |
-       | 0.0279693 0.991561 -0.01673889 |
-       | -0.00918579 0.01504516 0.7537536 |
-WTPT : | 0.9525146 1 1.086059 |
+ XYZ : | 0.358963 0.4463501 0.15888977 |
+       | 0.19592285 0.7428436 0.06123352 |
+       | 0.009674072 0.043518066 0.77171325 |
+CHAD : | 1.0457611 0.021820068 -0.049453735 |
+       | 0.02796936 0.9915618 -0.016738891 |
+       | -0.009185791 0.015045166 0.75375366 |
+WTPT : | 0.95251464 1. 1.0860595 |
 252 random bytes transformed to linear XYZD50 bytes:
 	3c592f a8d910 4f6811 180d33 1e104f 544506 598e1f
 	5c3530 1b1711 604226 99a10c 4d5f06 32462a 412597
diff --git a/profiles/misc/Japan_Color_2001_Coated.icc.txt b/profiles/misc/Japan_Color_2001_Coated.icc.txt
index e2d9c47..b648630 100644
--- a/profiles/misc/Japan_Color_2001_Coated.icc.txt
+++ b/profiles/misc/Japan_Color_2001_Coated.icc.txt
@@ -31,7 +31,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.7592773 0.7859344 0.66403 |
+WTPT : | 0.75927734 0.78593444 0.664032 |
 252 random bytes transformed to linear XYZD50 bytes:
 	101d25 3d240f 0b0d05 1b131b 1d1406 17230c 241f11
 	26233f 000001 0f1615 243052 4c3022 2c2e1d 020100
diff --git a/profiles/misc/Kodak_sRGB.icc.txt b/profiles/misc/Kodak_sRGB.icc.txt
index 71dbd16..d4e2241 100644
--- a/profiles/misc/Kodak_sRGB.icc.txt
+++ b/profiles/misc/Kodak_sRGB.icc.txt
@@ -29,9 +29,9 @@
 Best : 2.429111, 0.937191, 0.06168338, 1.070039, 0.003921569, 0.003055573, 0 (D-gap: 0.000184181) (f(1) = 1.00032)
 Inv  : 0.4116732, 1.170876, -0.003577695, 0.9345455, 0.004196231, -0.06580353, -0 (D-gap: -0.00415665) (f(1) = 0.99987)
 Best Error: | 0.00426031 0.00426031 0.00426031 |
- XYZ : | 0.4376373 0.3884124 0.1424102 |
-       | 0.2149505 0.712905 0.07212829 |
-       | 0.01126098 0.08071899 0.7258758 |
+ XYZ : | 0.43763732 0.38841247 0.14241027 |
+       | 0.21495056 0.7129058 0.072128295 |
+       | 0.011260986 0.080718994 0.72587585 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
@@ -48,7 +48,7 @@
   ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05) (f(1) = 1.00486)
   B2 : 16-bit table with 4096 entries
   ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05) (f(1) = 1.00486)
-WTPT : | 0.859405 0.891296 0.735702 |
+WTPT : | 0.8594055 0.8912963 0.7357025 |
 252 random bytes transformed to linear XYZD50 bytes:
 	355632 a5d31d 4c6517 190f30 1e124a 5d4709 4e8727
 	693a2f 1c1712 6c4626 a0a014 4d5d0c 2e442c 42288e
diff --git a/profiles/misc/Lexmark_X110.icc.txt b/profiles/misc/Lexmark_X110.icc.txt
index e6603cb..846263b 100644
--- a/profiles/misc/Lexmark_X110.icc.txt
+++ b/profiles/misc/Lexmark_X110.icc.txt
@@ -22,7 +22,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.950500 1 1.088806 |
+WTPT : | 0.9505004 1. 1.0888061 |
 252 random bytes transformed to linear XYZD50 bytes:
 	6fa094 d8f243 a7d043 825cbe 8365c0 a39f15 5c8161
 	a871bd 5a5249 aa8b81 d2f028 a6cb1b 729e83 937fb7
diff --git a/profiles/misc/MR2416GSDF.icc.txt b/profiles/misc/MR2416GSDF.icc.txt
index 5f3ea2c..db30591 100644
--- a/profiles/misc/MR2416GSDF.icc.txt
+++ b/profiles/misc/MR2416GSDF.icc.txt
@@ -26,14 +26,14 @@
 Best : 6.107902, 0.5691719, 0.4350795, 0.04863813, 0.01568628, -0.005722046, 0 (D-gap: 0.000529933) (f(1) = 1.02042)
 Inv  : 0.1637223, 31.27466, 0.178955, 20.56, 0.0007629511, -0.7644653, -0 (D-gap: -0.0100443) (f(1) = 0.994202)
 Best Error: | 0.0100443 0.0100443 0.0100443 |
- XYZ : | 0.445907 0.393814 0.1378173 |
-       | 0.2262420 0.7346191 0.05377197 |
-       | 0.00434875 0.0809936 0.752227 |
+ XYZ : | 0.4459075 0.3938140 0.13781738 |
+       | 0.22624206 0.73461914 0.053771972 |
+       | 0.004348754 0.08099365 0.7522277 |
  !!! This does not appear to use a D50 whitepoint, rather [0.977539 1.01463 0.83757]
-CHAD : | 1.069564 0.03421020 -0.0561828 |
-       | 0.04629516 0.9789581 -0.01980590 |
-       | -0.009368896 0.01460266 0.7407684 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0695648 0.034210205 -0.05618286 |
+       | 0.046295166 0.97895813 -0.019805908 |
+       | -0.0093688964 0.014602661 0.74076843 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	253d20 98d117 34490e 0f081f 130a34 4b3504 41771a
 	61341c 110e0a 5f3916 918b0d 354207 1d2e1b 311a7f
diff --git a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
index 26b661a..2ad63ce 100644
--- a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
@@ -22,7 +22,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.964202 1 0.824905 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	181915 7b8069 7b8069 7b8069 7b8069 7b8069 090a08
 	7b8069 7b8069 7b8069 7b8069 7b8069 7b8069 7b8069
diff --git a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
index 6651281..2a568f2 100644
--- a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
@@ -22,9 +22,9 @@
 gTRC : 16-bit table with 255 entries
   ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000128567) (f(1) = 0.00387573)
 bTRC : 16-bit table with 255 entries
- XYZ : | 0.964202 0 0.964202 |
-       | 1 0 1 |
-       | 0.824905 0 0.824905 |
+ XYZ : | 0.9642028 0. 0.9642028 |
+       | 1. 0. 1. |
+       | 0.8249054 0. 0.8249054 |
  !!! This does not appear to use a D50 whitepoint, rather [1.92841 2 1.64981]
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
@@ -36,7 +36,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.964202 1 0.824905 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	181915 7b8069 7b8069 7b8069 7b8069 7b8069 090a08
 	7b8069 7b8069 7b8069 7b8069 7b8069 7b8069 7b8069
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index c4ab4a3..2d1ccd8 100644
--- a/profiles/misc/Phase_One_P25.icc.txt
+++ b/profiles/misc/Phase_One_P25.icc.txt
@@ -27,9 +27,9 @@
 Best : 0.378341, 1.767159, 0.01614364, 3.844358, 0.007843138, -0.2351913, 0 (D-gap: 9.07481e-06) (f(1) = 1.00939)
 Inv  : 2.643118, 0.806221, 0.1896162, 0.2601215, 0.03015183, -0.009002686, -0 (D-gap: 0.000124334) (f(1) = 0.980007)
 Best Error: | 0.0199992 0.102694 0.124728 |
- XYZ : | 0.6479034 0.3573608 0.1564178 |
-       | 0.382919 1.10972 0 |
-       | 0.0832672 0.679275 0.5234222 |
+ XYZ : | 0.64790344 0.35736084 0.15641784 |
+       | 0.3829193 1.109726 0. |
+       | 0.08326721 0.6792755 0.52342224 |
  !!! This does not appear to use a D50 whitepoint, rather [1.16168 1.49265 1.28596]
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
@@ -44,7 +44,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.963455 1 0.8240356 |
+WTPT : | 0.9634552 1. 0.82403564 |
 252 random bytes transformed to linear XYZD50 bytes:
 	1d5c40 86f80b 4a7913 2e1551 341674 8a6006 38a75e
 	b45e34 2f2417 af6d2b b4ae06 547302 1f4c33 6822be
diff --git a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
index 4c72fef..5845342 100644
--- a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
@@ -30,7 +30,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.8455 0.8768310 0.7471618 |
+WTPT : | 0.84552 0.87683105 0.74716186 |
 252 random bytes transformed to linear XYZD50 bytes:
 	162328 3a2310 090a05 1d151d 1b1306 18230c 211b10
 	2a2742 000101 101615 253047 4c3123 27291b 020201
diff --git a/profiles/misc/SM245B.icc.txt b/profiles/misc/SM245B.icc.txt
index 22a86fe..3681001 100644
--- a/profiles/misc/SM245B.icc.txt
+++ b/profiles/misc/SM245B.icc.txt
@@ -28,11 +28,11 @@
 Best : 2.200056, 1, -7.76723e-07, 0.00389105, 0.01176471, 0, 0 (D-gap: 1.11191e-05) (f(1) = 1.00002)
 Inv  : 0.4545339, 1, -0, 257, 4.577707e-05, 0, -0 (D-gap: -0.00110817) (f(1) = 1)
 Best Error: | 0.00392157 0.00392157 0.00392157 |
- XYZ : | 0.4587249 0.3229522 0.1684875 |
-       | 0.232894 0.697387 0.0697174 |
-       | 0.0141143 0.1497802 0.923767 |
+ XYZ : | 0.45872497 0.32295227 0.16848754 |
+       | 0.2328949 0.6973877 0.06971740 |
+       | 0.01411438 0.14978027 0.9237670 |
  !!! This does not appear to use a D50 whitepoint, rather [0.950165 1 1.08766]
-WTPT : | 0.950164 1 1.087646 |
+WTPT : | 0.9501647 1. 1.0876464 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2f5645 99d32b 476620 1c0e3e 211160 604a0b 428637
 	723d3c 1d1716 724a31 9da41d 4a5f12 29443c 4b29b7
diff --git a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
index c0be290..448ec63 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -32,7 +32,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.964202 1 0.8248901 |
+WTPT : | 0.9642028 1. 0.82489013 |
 252 random bytes transformed to linear XYZD50 bytes:
 	121d22 36200e 090a05 191117 181106 131d0a 221d12
 	252136 000000 0e1312 242d47 472e1f 252618 010100
diff --git a/profiles/misc/ThinkpadX1YogaV2.icc.txt b/profiles/misc/ThinkpadX1YogaV2.icc.txt
index 26608bd..c7ba825 100644
--- a/profiles/misc/ThinkpadX1YogaV2.icc.txt
+++ b/profiles/misc/ThinkpadX1YogaV2.icc.txt
@@ -26,13 +26,13 @@
 Best : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4545461, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167012 0.000167012 0.000167012 |
- XYZ : | 0.566986 0.2606506 0.1365661 |
-       | 0.258071 0.684646 0.05728149 |
-       | 0.0004425048 0.04440307 0.7800445 |
-CHAD : | 1.048614 0.0233154 -0.05035400 |
-       | 0.03018188 0.9900207 -0.01715087 |
-       | -0.00923156 0.01502990 0.7517242 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.5669860 0.26065063 0.13656616 |
+       | 0.2580719 0.6846466 0.057281494 |
+       | 0.00044250488 0.044403076 0.78004455 |
+CHAD : | 1.0486145 0.02331543 -0.050354003 |
+       | 0.030181884 0.99002075 -0.017150878 |
+       | -0.009231567 0.015029907 0.75172424 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	265331 9ad40e 456610 1d0e34 211151 704e04 35841f
 	88422f 201811 864e25 ada809 4c6005 23432b 4d2899
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index 2addd45..71e27f2 100644
--- a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
+++ b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
@@ -31,7 +31,7 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-WTPT : | 0.7084045 0.7359466 0.571044 |
+WTPT : | 0.70840454 0.73594665 0.5710449 |
 252 random bytes transformed to linear XYZD50 bytes:
 	121f24 392210 0a0c06 1b141c 1d1407 151f0c 242014
 	23223b 000001 0f1514 212d48 482f22 242619 020101
diff --git a/profiles/misc/XPS13_9360.icc.txt b/profiles/misc/XPS13_9360.icc.txt
index 3364afd..895e686 100644
--- a/profiles/misc/XPS13_9360.icc.txt
+++ b/profiles/misc/XPS13_9360.icc.txt
@@ -26,13 +26,13 @@
 Best : 2.199997, 1, 0, 0, 0, 0, 0 (f(1) = 1)
 Inv  : 0.4545461, 1, -0, 0, 0, 0, 0 (f(1) = 1)
 Best Error: | 0.000167012 0.000167012 0.000167012 |
- XYZ : | 0.4379577 0.3842315 0.1420135 |
-       | 0.223083 0.7168731 0.06005859 |
-       | 0.01451110 0.0972595 0.713119 |
-CHAD : | 1.047271 0.02246093 -0.05081176 |
-       | 0.02880859 0.9914245 -0.01722717 |
-       | -0.0094451 0.015441894 0.7472839 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.43795776 0.38423156 0.14201355 |
+       | 0.2230835 0.71687316 0.060058593 |
+       | 0.014511108 0.09725952 0.7131195 |
+CHAD : | 1.0472717 0.022460937 -0.050811767 |
+       | 0.028808593 0.99142456 -0.017227172 |
+       | -0.00944519 0.0154418945 0.74728393 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	355733 a5d71d 4d6817 190d30 1e104a 5f4908 4d8a27
 	6c3a2f 1c1711 6f4826 a2a514 4f610c 2d452d 44268e
diff --git a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
index ba91c02..87f8041 100644
--- a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
+++ b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
@@ -31,10 +31,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1 0 0 |
-       | 0 1 0 |
-       | 0 0 1 |
-WTPT : | 0.844787 0.876174 0.745376 |
+CHAD : | 1. 0. 0. |
+       | 0. 1. 0. |
+       | 0. 0. 1. |
+WTPT : | 0.8447876 0.8761749 0.7453765 |
 252 random bytes transformed to linear XYZD50 bytes:
 	121d23 3b2510 0c0e07 1c151b 1e1607 17210e 252013
 	242239 010102 111616 212b45 493020 26281a 030201
diff --git a/profiles/misc/calibrated_nonzero_black.icc.txt b/profiles/misc/calibrated_nonzero_black.icc.txt
index 8dec597..9dd950f 100644
--- a/profiles/misc/calibrated_nonzero_black.icc.txt
+++ b/profiles/misc/calibrated_nonzero_black.icc.txt
@@ -27,13 +27,13 @@
 Best : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (D-gap: -2.67371e-06) (f(1) = 0.999908)
 Inv  : 0.4545797, 1.001312, -0.00129106, 3.02353, 0.001297017, 1.907349e-05, -0 (D-gap: 0.000822901) (f(1) = 1.00003)
 Best Error: | 0.00474447 0.00474447 0.00474447 |
- XYZ : | 0.43661 0.3853454 0.1422424 |
-       | 0.2221221 0.7183990 0.059463 |
-       | 0.01295471 0.0965423 0.7153930 |
-CHAD : | 1.047683 0.02285766 -0.04986572 |
-       | 0.02952575 0.990371 -0.01696777 |
-       | -0.00917053 0.014938354 0.7535400 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.436615 0.38534545 0.14224243 |
+       | 0.22212219 0.71839904 0.0594635 |
+       | 0.012954711 0.09654235 0.71539306 |
+CHAD : | 1.0476837 0.022857666 -0.049865722 |
+       | 0.029525756 0.9903717 -0.016967773 |
+       | -0.009170532 0.0149383544 0.75354003 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	355834 a5d71d 4d6817 1a0e30 1e104b 5f4a08 4e8a27
 	6c3a2f 1d1711 6e4826 a2a514 4f610c 2d462d 44268e
diff --git a/profiles/misc/crbug_1017960_19.icc.txt b/profiles/misc/crbug_1017960_19.icc.txt
index 475c658..df62d3c 100644
--- a/profiles/misc/crbug_1017960_19.icc.txt
+++ b/profiles/misc/crbug_1017960_19.icc.txt
@@ -29,13 +29,13 @@
 Best : 2.198663, 1.013107, -0.02007966, 0.09246967, 0.1333333, 0.00378418, 0 (D-gap: 5.86417e-05) (f(1) = 0.988472)
 Inv  : 0.4548219, 0.971817, -0.00367753, 10.81436, 0.01232929, 0.01985931, -0 (D-gap: -0.000332966) (f(1) = 1.00521)
 Best Error: | 0.0450786 0.0138438 0.154441 |
- XYZ : | 0.380554 0.43402 0.1496276 |
-       | 0.2195129 0.6819610 0.09852 |
-       | 0.0400695 0.08827209 0.696563 |
-CHAD : | 1.047882 0.02291870 -0.05020141 |
-       | 0.02957153 0.990493 -0.01705932 |
-       | -0.00923156 0.01507568 0.7516479 |
-WTPT : | 0.9504 1 1.089096 |
+ XYZ : | 0.3805542 0.434021 0.14962768 |
+       | 0.21951293 0.68196106 0.098526 |
+       | 0.04006958 0.088272094 0.6965637 |
+CHAD : | 1.0478820 0.022918701 -0.050201416 |
+       | 0.029571533 0.9904937 -0.017059326 |
+       | -0.009231567 0.015075683 0.75164794 |
+WTPT : | 0.95047 1. 1.0890960 |
 252 random bytes transformed to linear XYZD50 bytes:
 	3f564a a3cb20 4b5e1b 1b124c 23186f 52430d 578330
 	68404e 191519 68493e 9e9c1a 4a580d 364642 442fad
diff --git a/profiles/misc/crbug_976551.icc.txt b/profiles/misc/crbug_976551.icc.txt
index 2af4050..8dc1efb 100644
--- a/profiles/misc/crbug_976551.icc.txt
+++ b/profiles/misc/crbug_976551.icc.txt
@@ -29,13 +29,13 @@
 Best : 1.444059, 1.080429, -0.06959254, 0.09840215, 0.07722384, 0.005664825, 0 (D-gap: 0.000134651) (f(1) = 1.0213)
 Inv  : 0.6924927, 0.8943901, -0.005066564, 10.16238, 0.007598992, 0.06447601, -0 (D-gap: -0.000520892) (f(1) = 0.986366)
 Best Error: | 0.0190027 0.01756 0.0213387 |
- XYZ : | 0.51255 0.2954864 0.1561431 |
-       | 0.2402954 0.700576 0.05912780 |
-       | -0.001037597 0.04229736 0.783660 |
-CHAD : | 1.048614 0.0233154 -0.05033874 |
-       | 0.03018188 0.9900207 -0.0171356 |
-       | -0.00921630 0.01502990 0.7517242 |
-WTPT : | 0.9495544 1 1.089019 |
+ XYZ : | 0.512558 0.29548645 0.15614318 |
+       | 0.24029541 0.7005767 0.059127807 |
+       | -0.0010375976 0.042297363 0.7836608 |
+CHAD : | 1.0486145 0.02331543 -0.050338745 |
+       | 0.030181884 0.99002075 -0.01713562 |
+       | -0.009216308 0.015029907 0.75172424 |
+WTPT : | 0.94955444 1. 1.0890197 |
 252 random bytes transformed to linear XYZD50 bytes:
 	396c49 a7dc10 60831b 2f184c 341c6a 7a6306 459331
 	894847 342b1f 8d5f3b b0b70b 657d06 385e43 6339a5
diff --git a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index e06c2b2..a44e1e9 100644
--- a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
@@ -24,10 +24,10 @@
 Best : 2.231967, 1.004677, -0.00411076, 0.01206226, 0.03921569, -9.918213e-05, 0 (D-gap: 9.16654e-07) (f(1) = 1.00115)
 Inv  : 0.4480354, 0.989666, 9.815718e-05, 82.90323, 0.0004730297, 0.004089355, -0 (D-gap: -3.39784e-05) (f(1) = 0.999481)
 Best Error: | 0.00580043 0.00582463 0.00695762 |
- XYZ : | 0.449279 0.3825836 0.1323394 |
-       | 0.2244720 0.722351 0.0531768 |
-       | 0.001129150 0.0535583 0.770217 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.4492797 0.38258361 0.13233947 |
+       | 0.22447204 0.7223510 0.05317688 |
+       | 0.0011291503 0.05355835 0.7702179 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	34572f a6d810 4c6710 180c31 1c0f4d 604904 4c8a1f
 	6e3a2c 1b160f 704723 a5a60a 4e6006 2c452a 422497
diff --git a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
index 1acad69..eb5e069 100644
--- a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
@@ -25,10 +25,10 @@
 Best : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (D-gap: 0.000209285) (f(1) = 1.00411)
 Inv  : 0.4148793, 1.144882, 5.240855e-05, 12.91457, 0.003036545, -0.05947113, -0 (D-gap: -0.00262654) (f(1) = 0.998199)
 Best Error: | 0.00262654 0.00262654 0.00262654 |
- XYZ : | 0.4354705 0.388549 0.1401977 |
-       | 0.2217254 0.721969 0.0563049 |
-       | 0.013488769 0.0879211 0.723480 |
-WTPT : | 0.950500 1 1.089004 |
+ XYZ : | 0.43547058 0.3885498 0.14019775 |
+       | 0.22172546 0.7219696 0.05630493 |
+       | 0.0134887695 0.08792114 0.7234802 |
+WTPT : | 0.9505004 1. 1.0890045 |
 252 random bytes transformed to linear XYZD50 bytes:
 	355733 a6d91c 4d6817 1a0e30 1e114b 5f4909 4e8b26
 	6c3b2f 1d1812 6e4826 a3a513 4e600b 2e452c 442690
diff --git a/profiles/misc/sRGB_HP.icc.txt b/profiles/misc/sRGB_HP.icc.txt
index c542596..329cc83 100644
--- a/profiles/misc/sRGB_HP.icc.txt
+++ b/profiles/misc/sRGB_HP.icc.txt
@@ -33,10 +33,10 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4360656 0.385147 0.143066 |
-       | 0.222488 0.7168731 0.0606079 |
-       | 0.01391601 0.09707641 0.7140960 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.43606567 0.3851470 0.1430664 |
+       | 0.2224884 0.71687316 0.06060791 |
+       | 0.013916015 0.097076416 0.71409606 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/misc/sRGB_HP_2.icc.txt b/profiles/misc/sRGB_HP_2.icc.txt
index 9a9715a..b95f953 100644
--- a/profiles/misc/sRGB_HP_2.icc.txt
+++ b/profiles/misc/sRGB_HP_2.icc.txt
@@ -33,10 +33,10 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4360656 0.385147 0.143066 |
-       | 0.222488 0.7168731 0.0606079 |
-       | 0.01391601 0.09707641 0.7140960 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.43606567 0.3851470 0.1430664 |
+       | 0.2224884 0.71687316 0.06060791 |
+       | 0.013916015 0.097076416 0.71409606 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/misc/sRGB_ICC_v4_beta.icc.txt b/profiles/misc/sRGB_ICC_v4_beta.icc.txt
index 83cc5fd..6f910ea 100644
--- a/profiles/misc/sRGB_ICC_v4_beta.icc.txt
+++ b/profiles/misc/sRGB_ICC_v4_beta.icc.txt
@@ -32,10 +32,10 @@
   B0 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B1 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (f(1) = 1) (~Identity)
-CHAD : | 1.047912 0.0229339 -0.05020141 |
-       | 0.0296020 0.9904632 -0.01707458 |
-       | -0.00924682 0.01506042 0.751785 |
-WTPT : | 0.964202 1 0.824905 |
+CHAD : | 1.0479126 0.02293396 -0.050201416 |
+       | 0.02960205 0.99046325 -0.017074585 |
+       | -0.009246826 0.015060424 0.7517852 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2f4e2d 92c11a 486216 190e2f 1d1048 5c4609 3e711e
 	653727 1d1711 6b4623 9c9b13 4a5b0b 2b4229 3a2375
diff --git a/profiles/misc/sRGB_black_scaled.icc.txt b/profiles/misc/sRGB_black_scaled.icc.txt
index 534d281..d14e8f6 100644
--- a/profiles/misc/sRGB_black_scaled.icc.txt
+++ b/profiles/misc/sRGB_black_scaled.icc.txt
@@ -32,13 +32,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4360656 0.385147 0.143066 |
-       | 0.222488 0.7168731 0.0606079 |
-       | 0.01391601 0.09707641 0.7140960 |
-CHAD : | 1.047912 0.0229339 -0.05020141 |
-       | 0.0296020 0.9904632 -0.01707458 |
-       | -0.00924682 0.01506042 0.751785 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.43606567 0.3851470 0.1430664 |
+       | 0.2224884 0.71687316 0.06060791 |
+       | 0.013916015 0.097076416 0.71409606 |
+CHAD : | 1.0479126 0.02293396 -0.050201416 |
+       | 0.02960205 0.99046325 -0.017074585 |
+       | -0.009246826 0.015060424 0.7517852 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/misc/sRGB_lcms.icc.txt b/profiles/misc/sRGB_lcms.icc.txt
index f7eb4c2..04719ee 100644
--- a/profiles/misc/sRGB_lcms.icc.txt
+++ b/profiles/misc/sRGB_lcms.icc.txt
@@ -24,13 +24,13 @@
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
 Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
- XYZ : | 0.4358520 0.385330 0.1430206 |
-       | 0.2223815 0.71704 0.0605926 |
-       | 0.01391601 0.0971374 0.7138366 |
-CHAD : | 1.048004 0.02299499 -0.0501403 |
-       | 0.02970886 0.990341 -0.01705932 |
-       | -0.00923156 0.01501464 0.752258 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.43585205 0.3853302 0.14302063 |
+       | 0.22238159 0.717041 0.06059265 |
+       | 0.013916015 0.09713745 0.71383667 |
+CHAD : | 1.0480041 0.022994995 -0.05014038 |
+       | 0.029708862 0.9903411 -0.017059326 |
+       | -0.009231567 0.015014648 0.7522583 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/mobile/Display_P3_LUT.icc.txt b/profiles/mobile/Display_P3_LUT.icc.txt
index 4128bc2..291b565 100644
--- a/profiles/mobile/Display_P3_LUT.icc.txt
+++ b/profiles/mobile/Display_P3_LUT.icc.txt
@@ -27,13 +27,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.5151214 0.2919769 0.1571044 |
-       | 0.2411956 0.692245 0.066574 |
-       | -0.001037597 0.04188537 0.784072 |
-CHAD : | 1.047882 0.02291870 -0.05018615 |
-       | 0.02958679 0.990478 -0.01704406 |
-       | -0.00921630 0.01507568 0.7516784 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.51512146 0.29197692 0.15710449 |
+       | 0.24119567 0.6922454 0.0665741 |
+       | -0.0010375976 0.041885376 0.7840728 |
+CHAD : | 1.0478820 0.022918701 -0.050186157 |
+       | 0.029586792 0.9904785 -0.017044067 |
+       | -0.009216308 0.015075683 0.75167846 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2b5330 99d30e 456411 1d0f33 221250 674b04 3c841f
 	7d3f2e 1e1811 7c4b24 a5a409 4a5e05 26432b 4c2998
diff --git a/profiles/mobile/Display_P3_parametric.icc.txt b/profiles/mobile/Display_P3_parametric.icc.txt
index efbdada..5b8dde3 100644
--- a/profiles/mobile/Display_P3_parametric.icc.txt
+++ b/profiles/mobile/Display_P3_parametric.icc.txt
@@ -24,13 +24,13 @@
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
 Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
- XYZ : | 0.5151214 0.2919769 0.1571044 |
-       | 0.2411956 0.692245 0.066574 |
-       | -0.001037597 0.04188537 0.784072 |
-CHAD : | 1.047882 0.02291870 -0.05018615 |
-       | 0.02958679 0.990478 -0.01704406 |
-       | -0.00921630 0.01507568 0.7516784 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.51512146 0.29197692 0.15710449 |
+       | 0.24119567 0.6922454 0.0665741 |
+       | -0.0010375976 0.041885376 0.7840728 |
+CHAD : | 1.0478820 0.022918701 -0.050186157 |
+       | 0.029586792 0.9904785 -0.017044067 |
+       | -0.009216308 0.015075683 0.75167846 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2b5330 99d30e 456411 1d0f33 221250 674b04 3c841f
 	7d3f2e 1e1811 7c4b24 a5a409 4a5e05 26432b 4c2998
diff --git a/profiles/mobile/iPhone7p.icc.txt b/profiles/mobile/iPhone7p.icc.txt
index 75c5714..cb9d7ee 100644
--- a/profiles/mobile/iPhone7p.icc.txt
+++ b/profiles/mobile/iPhone7p.icc.txt
@@ -23,13 +23,13 @@
 Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (f(1) = 1) (~sRGB)
 Inv  : 0.4166677, 1.136909, -0, 12.98771, 0.003002951, -0.05482483, -0 (D-gap: -3.19481e-05) (f(1) = 1)
 Best Error: | 7.4923e-05 7.4923e-05 7.4923e-05 |
- XYZ : | 0.5151214 0.2919769 0.1571044 |
-       | 0.2411956 0.692245 0.066574 |
-       | -0.001052856 0.04188537 0.784072 |
-CHAD : | 1.047882 0.02291870 -0.05020141 |
-       | 0.02958679 0.990478 -0.01705932 |
-       | -0.00923156 0.01507568 0.7516784 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.51512146 0.29197692 0.15710449 |
+       | 0.24119567 0.6922454 0.0665741 |
+       | -0.0010528564 0.041885376 0.7840728 |
+CHAD : | 1.0478820 0.022918701 -0.050201416 |
+       | 0.029586792 0.9904785 -0.017059326 |
+       | -0.009231567 0.015075683 0.75167846 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2b5330 99d30e 456411 1d0f33 22124f 674b04 3c841f
 	7d3f2e 1e1811 7c4b24 a5a409 4a5e05 26432b 4c2998
diff --git a/profiles/mobile/sRGB_LUT.icc.txt b/profiles/mobile/sRGB_LUT.icc.txt
index 1b6db14..eafb102 100644
--- a/profiles/mobile/sRGB_LUT.icc.txt
+++ b/profiles/mobile/sRGB_LUT.icc.txt
@@ -27,13 +27,13 @@
 Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (f(1) = 0.997971) (~sRGB)
 Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129) (f(1) = 1.0009)
 Best Error: | 0.00197129 0.00197129 0.00197129 |
- XYZ : | 0.4360351 0.3851165 0.1430511 |
-       | 0.222488 0.716903 0.0606079 |
-       | 0.01391601 0.0970611 0.7139129 |
-CHAD : | 1.047882 0.02291870 -0.05018615 |
-       | 0.02958679 0.990478 -0.01704406 |
-       | -0.00921630 0.01507568 0.7516784 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.43603515 0.38511657 0.14305114 |
+       | 0.2224884 0.7169036 0.06060791 |
+       | 0.013916015 0.09706115 0.71391296 |
+CHAD : | 1.0478820 0.022918701 -0.050186157 |
+       | 0.029586792 0.9904785 -0.017044067 |
+       | -0.009216308 0.015075683 0.75167846 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/mobile/sRGB_parametric.icc.txt b/profiles/mobile/sRGB_parametric.icc.txt
index 1d3d65e..56c0384 100644
--- a/profiles/mobile/sRGB_parametric.icc.txt
+++ b/profiles/mobile/sRGB_parametric.icc.txt
@@ -24,13 +24,13 @@
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (f(1) = 1) (~sRGB)
 Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05) (f(1) = 1)
 Best Error: | 8.2612e-05 8.2612e-05 8.2612e-05 |
- XYZ : | 0.4360351 0.3851165 0.1430511 |
-       | 0.222488 0.716903 0.0606079 |
-       | 0.01391601 0.0970611 0.7139129 |
-CHAD : | 1.047882 0.02291870 -0.05018615 |
-       | 0.02958679 0.990478 -0.01704406 |
-       | -0.00921630 0.01507568 0.7516784 |
-WTPT : | 0.950454 1 1.089050 |
+ XYZ : | 0.43603515 0.38511657 0.14305114 |
+       | 0.2224884 0.7169036 0.06060791 |
+       | 0.013916015 0.09706115 0.71391296 |
+CHAD : | 1.0478820 0.022918701 -0.050186157 |
+       | 0.029586792 0.9904785 -0.017044067 |
+       | -0.009216308 0.015075683 0.75167846 |
+WTPT : | 0.9504547 1. 1.0890502 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345632 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/profiles/sRGB_Facebook.icc.txt b/profiles/sRGB_Facebook.icc.txt
index bdaef5b..3af1446 100644
--- a/profiles/sRGB_Facebook.icc.txt
+++ b/profiles/sRGB_Facebook.icc.txt
@@ -26,10 +26,10 @@
 Best : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (D-gap: 0.000151274) (f(1) = 0.999268) (~sRGB)
 Inv  : 0.4188614, 1.125809, -0.0004423458, 12.9133, 0.003097581, -0.05030823, -0 (D-gap: -0.00200752) (f(1) = 1.00032)
 Best Error: | 0.00184847 0.00184847 0.00184847 |
- XYZ : | 0.4360656 0.385147 0.143066 |
-       | 0.222488 0.7168731 0.0606079 |
-       | 0.01391601 0.09707641 0.7140960 |
-WTPT : | 0.964202 1 0.824905 |
+ XYZ : | 0.43606567 0.3851470 0.1430664 |
+       | 0.2224884 0.71687316 0.06060791 |
+       | 0.013916015 0.097076416 0.71409606 |
+WTPT : | 0.9642028 1. 0.8249054 |
 252 random bytes transformed to linear XYZD50 bytes:
 	345633 a4d61e 4c6617 190e2f 1e1149 5e4809 4d8927
 	6c3b2e 1c1711 6e4726 a1a315 4d5f0c 2d442c 44268d
diff --git a/test_only.c b/test_only.c
index 08c12f1..ced7937 100644
--- a/test_only.c
+++ b/test_only.c
@@ -17,9 +17,9 @@
 
 static void print_shortest_float(FILE* fp, float x) {
     char buf[80];
-    int chars = 0;
-    for (int digits = 0; digits < 12; digits++) {
-        chars = snprintf(buf, sizeof(buf), "%.*f", digits, x);
+    int digits;
+    for (digits = 0; digits < 12; digits++) {
+        snprintf(buf, sizeof(buf), "%.*f", digits, x);
         float back;
         if (1 != sscanf(buf, "%f", &back) || back == x) {
             break;
@@ -30,16 +30,12 @@
     // That'd be the ideal thing to print, but sadly fprintf() rounding is
     // implementation specific, so results vary in the last digit.
     //
-    // We compromise by dropping that last digit.
+    // So we'll print out one _extra_ digit, then chop that off.
     //
-    // E.g. glibc prints 0x1.7p-6 == 0x3cb80000 as 0.022460938 in 11 digits,
-    // while newlib prints as 0.022460937.  We print 0.02246094.
+    // (0x1.7p-6 == 0x3cb80000 is a good number to test this sort of thing with.)
 
-    bool is_fractional = NULL != strchr(buf, '.');
-    if (is_fractional) {
-        chars--;
-    }
-    fprintf(fp, "%.*s", chars, buf);
+    int chars = snprintf(buf, sizeof(buf), "%.*f", digits+1, x);
+    fprintf(fp, "%.*s", chars-1, buf);
 }
 
 static void dump_transform_to_XYZD50(FILE* fp,