Two steps as good as three, maybe better?

Everything looks pretty good with two Gauss-Newton steps.

There's a mix of wins, losses, and ambiguous changes here, with many
more wins than losses.  I definitely wouldn't be eager to land the
inverse of this change: slow things down, fit one or two profiles a bit
better, and fit a whole bunch a bit worse.

Change-Id: Icba5d4e0fcda8f668ebd20faab1aec38c6e94106
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/235915
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/profiles/color.org/Upper_Left.icc.txt b/profiles/color.org/Upper_Left.icc.txt
index f83bb3e..2d7d5d6 100644
--- a/profiles/color.org/Upper_Left.icc.txt
+++ b/profiles/color.org/Upper_Left.icc.txt
@@ -20,11 +20,11 @@
  A2B : "M", Matrix, "B"
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-05)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
   M1 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-05)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
   M2 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-05)
+  ~= : 3.278764, 0.6213684, 0.2607365, 1.412451, 0.003921569, -0.006866455, 0 (Max error: 0.367269) (D-gap: 0.000154649)
 Mtrx : | 0.959396958 0.84733814 0.314814538 -0.503105104 |
        | 0.489433438 1.57752109 0.133390293 -0.521812081 |
        | 0.0305781476 0.213589266 1.57086837 -0.430443883 |
diff --git a/profiles/color.org/Upper_Right.icc.txt b/profiles/color.org/Upper_Right.icc.txt
index d851cde..43e1dbd 100644
--- a/profiles/color.org/Upper_Right.icc.txt
+++ b/profiles/color.org/Upper_Right.icc.txt
@@ -22,8 +22,11 @@
 CLUT : 2 x 2 x 2 (16 bpp)
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
   M1 : 16-bit table with 256 entries
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
   M2 : 16-bit table with 256 entries
+  ~= : 5.635474, 0.536911, 0.3392392, 0.9400777, 0.05882353, 0.05212021, 0 (Max error: 0.362454) (D-gap: 0.000554256)
 Mtrx : | 2.20205379 1.94485557 0.72255367 -0.733356714 |
        | 1.12339592 3.6207943 0.306147665 -0.760608494 |
        | 0.0701893568 0.490257412 3.60553575 -0.62743181 |
diff --git a/profiles/color.org/sRGB2014.icc.txt b/profiles/color.org/sRGB2014.icc.txt
index 998edcf..2ac3d4e 100644
--- a/profiles/color.org/sRGB2014.icc.txt
+++ b/profiles/color.org/sRGB2014.icc.txt
@@ -23,14 +23,14 @@
  'chad' : 'sf32' :     44 : 2980
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/fuzz/inf_a.icc.txt b/profiles/fuzz/inf_a.icc.txt
index c84e1c3..498caa6 100644
--- a/profiles/fuzz/inf_a.icc.txt
+++ b/profiles/fuzz/inf_a.icc.txt
@@ -12,13 +12,13 @@
  'kTRC' : 'curv' :    544 : 388
 
 rTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.2187653, -0.0008457435, 0.1250019, 0.00390625, -0.6283875, 0 (Max error: 942760) (D-gap: 7.62865e-05)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
 gTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.2187653, -0.0008457435, 0.1250019, 0.00390625, -0.6283875, 0 (Max error: 942760) (D-gap: 7.62865e-05)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
 bTRC : 16-bit table with 257 entries
-  ~= : 0.03983583, 0.2187653, -0.0008457435, 0.1250019, 0.00390625, -0.6283875, 0 (Max error: 942760) (D-gap: 7.62865e-05)
-Best : 0.03983583, 0.2187653, -0.0008457435, 0.1250019, 0.00390625, -0.6283875, 0 (D-gap: 7.62865e-05)
-Inv  : 25.10303, 1.06237, 0.6675802, 7.999878, 0.0004882887, 0.005764008, -0 (D-gap: 0.00189783)
+  ~= : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (Max error: 1.84306e+06) (D-gap: 0.000110619)
+Best : 0.03983583, 0.1516733, -0.0005732282, 0.1250019, 0.00390625, -0.6482544, 0 (D-gap: 0.000110619)
+Inv  : 25.10303, 1.07798, 0.6988053, 7.999878, 0.0004882887, 0.005870819, -0 (D-gap: 0.00209078)
  XYZ : | 0.9614258 0 0 |
        | 0 1.0004883 0 |
        | 0 0 0.82470703 |
diff --git a/profiles/fuzz/inverse_tf_not_invertible.icc.txt b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
index 6f51224..728b687 100644
--- a/profiles/fuzz/inverse_tf_not_invertible.icc.txt
+++ b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
@@ -16,13 +16,13 @@
  'bTRC' : 'curv' :   8204 : 320
 
 rTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (Max error: 0.782032) (D-gap: 0.000930738)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
 gTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (Max error: 0.782032) (D-gap: 0.000930738)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
 bTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (Max error: 0.782032) (D-gap: 0.000930738)
-Best : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (D-gap: 0.000930738)
-Inv  : 0.1954153, 18.88403, 9.277484, 12.97384, 0.003143358, -1.507324, -0 (D-gap: -0.000780527)
+  ~= : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (Max error: 0.761265) (D-gap: 0.000436735)
+Best : 3.239427, 0.7659531, 0.7326652, 0.07707816, 0.04078144, -0.4143219, 0 (D-gap: 0.000436735)
+Inv  : 0.3086966, 2.37207, 0.9828007, 12.97384, 0.003143358, -0.9564362, -0 (D-gap: -0.00023884)
  XYZ : | 0.43606567 0.3850708 0.14305115 |
        | 0.22250366 0.71687317 0.06060791 |
        | 0.013916016 0.09706116 0.71398926 |
diff --git a/profiles/fuzz/nan_s.icc.txt b/profiles/fuzz/nan_s.icc.txt
index 1c1fde1..49cb861 100644
--- a/profiles/fuzz/nan_s.icc.txt
+++ b/profiles/fuzz/nan_s.icc.txt
@@ -8,8 +8,13 @@
  'kTRC' : 'curv' :    528 : 48
 
 rTRC : 16-bit table with 258 entries
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
 gTRC : 16-bit table with 258 entries
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
 bTRC : 16-bit table with 258 entries
+  ~= : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (Max error: 6.768) (D-gap: -2.68221e-06)
+Best : 0.2315896, 0.001808926, 0.0004575932, 206.8078, 0.00389105, 0.635603, 0 (D-gap: -2.68221e-06)
+Inv  : 4.317984, 4.316589, -2.743637, 0.004835406, 0.8046997, -0.2521896, -0 (D-gap: 0.000728548)
  XYZ : | 0.95739746 0 0 |
        | 0 1.0083008 0 |
        | 0 0 0.8161621 |
diff --git a/profiles/fuzz/one_d_clut.icc.txt b/profiles/fuzz/one_d_clut.icc.txt
index fcb0702..f0d177e 100644
--- a/profiles/fuzz/one_d_clut.icc.txt
+++ b/profiles/fuzz/one_d_clut.icc.txt
@@ -20,9 +20,10 @@
 CLUT : 2 (16 bpp)
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
-  ~= : 13.98541, 0.5743599, 0.6578368, 0.9400777, 0.05882353, 0.05073166, 0 (Max error: 0.410614) (D-gap: 0.0011942)
   M1 : 16-bit table with 256 entries
+  ~= : 2.556935, 0.8069916, 0.1048158, 1.058366, 0.003921569, 0.0008773804, 0 (Max error: 0.473545) (D-gap: 0.000101503)
   M2 : 16-bit table with 256 entries
+  ~= : 2.512288, 0.9082756, 0.1125738, 1.058366, 0.003921569, -8.392334e-05, 0 (Max error: 0.194256) (D-gap: 0.00024071)
 Mtrx : | 2.20205379 1.94485557 4.72249269 -0.733356714 |
        | 1.12339592 3.6207943 0.306147665 -0.760608494 |
        | 0.0701893568 0.490257412 3.60553575 -0.62743181 |
diff --git a/profiles/fuzz/polytf_nan_after_update.icc.txt b/profiles/fuzz/polytf_nan_after_update.icc.txt
index 36d62df..ea7ffb3 100644
--- a/profiles/fuzz/polytf_nan_after_update.icc.txt
+++ b/profiles/fuzz/polytf_nan_after_update.icc.txt
@@ -19,6 +19,7 @@
 rTRC : 16-bit table with 256 entries
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
+  ~= : 0.0886098, 25.71094, -0.1004161, 254.1323, 0.003921569, 0.4954681, 0 (Max error: 0.996099) (D-gap: 7.62939e-06)
  XYZ : | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
        | 8224.125 8224.125 8224.125 |
diff --git a/profiles/misc/Apple_Color_LCD.icc.txt b/profiles/misc/Apple_Color_LCD.icc.txt
index 303419e..be3bbc8 100644
--- a/profiles/misc/Apple_Color_LCD.icc.txt
+++ b/profiles/misc/Apple_Color_LCD.icc.txt
@@ -24,14 +24,14 @@
  'aagg' : 'para' :     32 : 3652
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.44433594 0.3794403 0.14041138 |
        | 0.22476196 0.7261658 0.049072266 |
        | 0.0054779053 0.07797241 0.7414551 |
diff --git a/profiles/misc/BenQ_GL2450.icc.txt b/profiles/misc/BenQ_GL2450.icc.txt
index 78174ef..dc0d1d3 100644
--- a/profiles/misc/BenQ_GL2450.icc.txt
+++ b/profiles/misc/BenQ_GL2450.icc.txt
@@ -21,13 +21,13 @@
  'bTRC' : 'curv' :   2060 : 4936
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (Max error: 0.00890554)
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (Max error: 0.00890554)
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
 bTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (Max error: 0.00890554)
-Best : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0
-Inv  : 0.5017281, 0.9963799, 1.520355e-05, 0, 0, -2.288818e-05, 0
+  ~= : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0 (Max error: 0.0113029)
+Best : 1.999662, 0.9999352, 0.009358991, 0, 0, -0.0001144409, 0
+Inv  : 0.5000845, 1.00013, 0.0001144558, 0, 0, -0.009284973, 0
  XYZ : | 0.38839722 0.40229797 0.20140076 |
        | 0.19389343 0.7411041 0.065093994 |
        | 0.010299683 0.061203003 1.0146027 |
diff --git a/profiles/misc/BenQ_RL2455.icc.txt b/profiles/misc/BenQ_RL2455.icc.txt
index 67a2cb1..d57df1c 100644
--- a/profiles/misc/BenQ_RL2455.icc.txt
+++ b/profiles/misc/BenQ_RL2455.icc.txt
@@ -31,24 +31,24 @@
  'K071' : 'ui08' :     10 : 52024
 
 rTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (Max error: 0.0248607) (D-gap: -8.59052e-06)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
 gTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (Max error: 0.0248607) (D-gap: -8.59052e-06)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
 bTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (Max error: 0.0248607) (D-gap: -8.59052e-06)
-Best : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (D-gap: -8.59052e-06)
-Inv  : 0.4542148, 1.001282, 0.0001069484, 5.27827, 0.047364, -0.000617981, -0 (D-gap: 2.86251e-05)
+  ~= : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (Max error: 0.0248416) (D-gap: 2.13832e-06)
+Best : 2.201905, 0.9993172, 0.000747185, 0.189456, 0.25, -0.0001144409, 0 (D-gap: 2.13832e-06)
+Inv  : 0.4541523, 1.001511, 0.0001146138, 5.27827, 0.047364, -0.0007400513, -0 (D-gap: -1.89245e-06)
  XYZ : | 0.4651947 0.35595703 0.14302063 |
        | 0.23188782 0.6815338 0.08656311 |
        | 0.009918213 0.09286499 0.72210693 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
+  ~= : 2.199462, 1.000076, -0.0001402027, 0.005188067, 0.01176471, -7.629395e-06, 0 (Max error: 0.00392157) (D-gap: -1.30855e-05)
 CLUT : 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
diff --git a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
index 1cb545b..f3bb5bc 100644
--- a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
@@ -19,13 +19,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.160069, 0.9661255, 0.08076088, 0.8236057, 0.02352941, -0.05234528, 0 (Max error: 0.00187165) (D-gap: 0.000250041)
+  ~= : 1.161658, 0.965477, 0.08204222, 0.8236057, 0.02352941, -0.05311584, 0 (Max error: 0.00190735) (D-gap: 0.000240505)
   A1 : 16-bit table with 256 entries
-  ~= : 1.086079, 1.063683, -0.1907801, 0.8082388, 0.1803922, 0.1453209, 0 (Max error: 0.00695801) (D-gap: 0.000132725)
+  ~= : 1.185196, 0.9845772, 0.0416452, 0.7782102, 0.01960784, -0.02090454, 0 (Max error: 0.00865173) (D-gap: 0.000137096)
   A2 : 16-bit table with 256 entries
-  ~= : 1.187467, 0.9799652, 0.03853871, 0.7821012, 0.03529412, -0.0170517, 0 (Max error: 0.00417328) (D-gap: 0.000124509)
+  ~= : 1.187326, 0.9800682, 0.03831189, 0.7821012, 0.03529412, -0.01689911, 0 (Max error: 0.00418091) (D-gap: 0.000131184)
   A3 : 16-bit table with 256 entries
-  ~= : 4.09466, 0.6916656, 0.7610579, 0.7655641, 0.01568628, -0.3340759, 0 (Max error: 0.548958) (D-gap: 0.000320251)
+  ~= : 1.788781, 0.7681046, 0.3830559, 0.7655641, 0.01568628, -0.1776505, 0 (Max error: 0.0762317) (D-gap: 0.000264938)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
index cae8402..5bba86b 100644
--- a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
+++ b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
@@ -23,13 +23,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.05448, 1.018715, -0.007989922, 0.8365758, 0.007843138, 0.0066185, 0 (Max error: 0.0167046) (D-gap: 5.71203e-05)
+  ~= : 1.054374, 1.018814, -0.007990699, 0.8365758, 0.007843138, 0.006622314, 0 (Max error: 0.0168037) (D-gap: 6.0935e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117216, 1.017609, 0.0126555, 0.7665369, 0.007843138, -0.007049561, 0 (Max error: 0.0234528) (D-gap: 3.23332e-05)
+  ~= : 1.113842, 1.019768, 0.006776623, 0.7665369, 0.007843138, -0.003089905, 0 (Max error: 0.0232544) (D-gap: 4.07971e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 1.179158, 0.9974213, 0.03461293, 0.7081712, 0.007843138, -0.01841736, 0 (Max error: 0.0163574) (D-gap: 0.000120555)
+  ~= : 1.181166, 0.9961662, 0.03711115, 0.7081712, 0.007843138, -0.01995087, 0 (Max error: 0.0163422) (D-gap: 0.000101243)
   A3 : 16-bit table with 256 entries
-  ~= : 2.925117, 0.6722412, 0.6647326, 0.7159533, 0.007843137, -0.3037949, 0 (Max error: 0.360039) (D-gap: 0.000503455)
+  ~= : 1.671706, 0.8024101, 0.3172798, 0.7159533, 0.007843137, -0.1457214, 0 (Max error: 0.0433578) (D-gap: 0.000295554)
 CLUT : 11 x 11 x 11 x 11 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index 81ff116..d626af4 100644
--- a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
@@ -23,13 +23,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.3393432, 25.73071, 12.38586, 1.200778, 0.01960784, -2.357025, 0 (Max error: 0.102386) (D-gap: 0.000320079)
+  ~= : 0.4499924, 7.476257, 4.947246, 1.200778, 0.01960784, -2.056915, 0 (Max error: 0.0593643) (D-gap: -7.66497e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 0.3643354, 14.16479, 6.025642, 1.205447, 0.01960784, -1.931793, 0 (Max error: 0.0767495) (D-gap: 0.000274297)
+  ~= : 0.4521776, 7.18457, 4.681381, 1.205447, 0.01960784, -2.013153, 0 (Max error: 0.0558319) (D-gap: -7.66553e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7474884, 0.9664421, -0.1072783, 1.241552, 0.1490196, 0.1005783, 0 (Max error: 0.0143543) (D-gap: 0.000175521)
+  ~= : 0.7746541, 0.9274139, -0.1297604, 1.241552, 0.1490196, 0.1603584, 0 (Max error: 0.0166886) (D-gap: 9.95845e-05)
   A3 : 16-bit table with 256 entries
-  ~= : 0.8032417, 0.9342613, -0.01337674, 1.182879, 0.01568628, 0.01389694, 0 (Max error: 0.0662346) (D-gap: 8.3521e-05)
+  ~= : 0.7854362, 0.9449272, -0.01005363, 1.182879, 0.01568628, 0.00359726, 0 (Max error: 0.0640945) (D-gap: 5.65797e-05)
 CLUT : 17 x 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 256 entries
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index 5bbce8a..c497a76 100644
--- a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
+++ b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
@@ -31,24 +31,24 @@
  'meta' : 'dict' :   2312 : 738448
 
 rTRC : 16-bit table with 256 entries
-  ~= : 1.929522, 1.131104, -0.133071, 0.03579767, 0.1176471, 0.004390717, 0 (Max error: 0.0831201) (D-gap: 0.000179225)
+  ~= : 2.006128, 1.167313, -0.1089448, 0.03579767, 0.1176471, 0.003585815, 0 (Max error: 0.0831201) (D-gap: 0.000162528)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.287451, 0.9762917, 0.03631328, 0.03112842, 0.1921569, -0.02641296, 0 (Max error: 0.0558824) (D-gap: 0.000206613)
+  ~= : 2.287943, 0.9762955, 0.03624173, 0.03112842, 0.1921569, -0.02638245, 0 (Max error: 0.0558824) (D-gap: 0.000189447)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.195809, 1.024223, -0.01593081, 0.00389105, 0.1607843, -0.01451111, 0 (Max error: 0.152941) (D-gap: 9.63116e-05)
-Best : 2.195809, 1.024223, -0.01593081, 0.00389105, 0.1607843, -0.01451111, 0 (D-gap: 9.63116e-05)
-Inv  : 0.455413, 0.9488716, 0.01376918, 257, 0.0006256199, 0.01558304, -0 (D-gap: -0.000409693)
+  ~= : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (Max error: 0.152941) (D-gap: 0.000200205)
+Best : 2.463363, 1.063622, 0.02862149, 1.546164e-09, 0.02352941, -0.000541687, 0 (D-gap: 0.000200205)
+Inv  : 0.4059491, 0.8591919, 0.0004654131, 6.467617e+08, 3.638034e-11, -0.02680969, -0 (D-gap: -0.00594747)
  XYZ : | 0.43673706 0.38032532 0.1471405 |
        | 0.21763611 0.72984314 0.052520752 |
        | 0.0026550293 0.06440735 0.75782776 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 2049 entries
-  ~= : 0.9896749, 1.006287, 0.1542477, 1.000015, 0.125, -0.1584778, 0 (Max error: 0.0184479) (D-gap: 0.00021553) (~Identity)
+  ~= : 0.9956406, 1.001862, -0.1228046, 1.000015, 0.125, 0.1227303, 0 (Max error: 0.0187137) (D-gap: 0.00022085)
   A1 : 16-bit table with 2049 entries
-  ~= : 0.9858807, 1.008598, 0.1456893, 1.000015, 0.125, -0.1515274, 0 (Max error: 0.0167599) (D-gap: 0.000240326)
+  ~= : 0.9935906, 1.002388, -0.1220437, 1.000015, 0.125, 0.1218605, 0 (Max error: 0.0171154) (D-gap: 0.000234798)
   A2 : 16-bit table with 2049 entries
-  ~= : 0.9882579, 1.008926, 0.3841263, 1.000015, 0.03125, -0.3887711, 0 (Max error: 0.0201378) (D-gap: -9.9659e-05) (~Identity)
+  ~= : 0.9960349, 1.003311, -0.02821074, 1.000015, 0.03125, 0.02817535, 0 (Max error: 0.020617) (D-gap: 0.000140041)
 CLUT : 33 x 33 x 33 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index f71395b..d45f28e 100644
--- a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
+++ b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
@@ -12,13 +12,13 @@
  'kTRC' : 'curv' :    524 : 388
 
 rTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.95769e-06)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.95769e-06)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.95769e-06)
-Best : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (D-gap: -7.95769e-06)
-Inv  : 0.5756963, 1.000122, 1.526065e-05, 15.89691, 0.001480125, -3.051758e-05, -0 (D-gap: 7.42637e-05)
+  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.88318e-06)
+Best : 1.73703, 0.9999313, 3.373019e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (D-gap: -7.88318e-06)
+Inv  : 0.5756955, 1.000122, 1.526065e-05, 15.89691, 0.001480125, -3.051758e-05, -0 (D-gap: 7.43829e-05)
  XYZ : | 0.9642029 0 0 |
        | 0 1 0 |
        | 0 0 0.8249054 |
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index 560ad6c..9aae7c0 100644
--- a/profiles/misc/HD_709.icc.txt
+++ b/profiles/misc/HD_709.icc.txt
@@ -24,14 +24,14 @@
  'aagg' : 'para' :     32 : 2696
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.358963 0.4463501 0.15888977 |
        | 0.19592285 0.7428436 0.06123352 |
        | 0.009674072 0.043518066 0.77171326 |
diff --git a/profiles/misc/Japan_Color_2001_Coated.icc.txt b/profiles/misc/Japan_Color_2001_Coated.icc.txt
index df4905b..d82513b 100644
--- a/profiles/misc/Japan_Color_2001_Coated.icc.txt
+++ b/profiles/misc/Japan_Color_2001_Coated.icc.txt
@@ -19,13 +19,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 1.010957, 1.063629, -0.03336876, 0.7801556, 0.03137255, 0.02462769, 0 (Max error: 0.0513306) (D-gap: 0.000152213)
+  ~= : 1.0495, 1.034943, 0.003219063, 0.5252918, 0.003921569, -0.003570557, 0 (Max error: 0.0335426) (D-gap: 7.2716e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117948, 1.022087, -0.0280573, 0.6270149, 0.02745098, 0.01732635, 0 (Max error: 0.00934219) (D-gap: 0.000114178)
+  ~= : 1.117985, 1.022064, -0.02805667, 0.6270149, 0.02745098, 0.01732254, 0 (Max error: 0.00931168) (D-gap: 0.000110364)
   A2 : 16-bit table with 256 entries
-  ~= : 1.158917, 0.990242, 0.04165715, 0.6193256, 0.02352941, -0.02733612, 0 (Max error: 0.00832367) (D-gap: 0.000154509)
+  ~= : 1.159545, 0.9914627, 0.03615639, 0.3346303, 0.003921568, -0.02250671, 0 (Max error: 0.00820923) (D-gap: 0.000145535)
   A3 : 16-bit table with 256 entries
-  ~= : 1.834799, 0.7538795, 0.3804454, 0.3229572, 0.003921569, -0.1707611, 0 (Max error: 0.0589523) (D-gap: 0.000190716)
+  ~= : 1.517888, 0.8733749, 0.1790551, 0.3229572, 0.003921569, -0.07411957, 0 (Max error: 0.0159897) (D-gap: 0.000226001)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/Kodak_sRGB.icc.txt b/profiles/misc/Kodak_sRGB.icc.txt
index 3132b50..1bf10cb 100644
--- a/profiles/misc/Kodak_sRGB.icc.txt
+++ b/profiles/misc/Kodak_sRGB.icc.txt
@@ -21,24 +21,24 @@
  'bTRC' : 'curv' :    524 : 149844
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (Max error: 0.00561243) (D-gap: 0.000211882)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (Max error: 0.00561243) (D-gap: 0.000211882)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (Max error: 0.00561243) (D-gap: 0.000211882)
-Best : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (D-gap: 0.000211882)
-Inv  : 0.4137676, 1.159515, -0.003923378, 0.9345455, 0.004196231, -0.05766296, -0 (D-gap: -0.00561243)
+  ~= : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (Max error: 0.0147646) (D-gap: 0.000183304)
+Best : 2.384167, 0.9483299, 0.03699977, 1.070039, 0.003921569, 0.003894806, 0 (D-gap: 0.000183304)
+Inv  : 0.4194337, 1.135002, -0.004420613, 0.9345455, 0.004196231, -0.03895569, -0 (D-gap: -0.00769717)
  XYZ : | 0.43763733 0.38841248 0.14241028 |
        | 0.21495056 0.7129059 0.072128296 |
        | 0.011260986 0.080718994 0.72587585 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
   A1 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
+  ~= : 0.726038, 1.435478, 0.4168581, 0.7458658, 0.0627451, -0.5636597, 0 (Max error: 0.00278986) (D-gap: 0.000144243)
 CLUT : 8 x 8 x 8 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index cbf18f2..8aff9dd 100644
--- a/profiles/misc/Phase_One_P25.icc.txt
+++ b/profiles/misc/Phase_One_P25.icc.txt
@@ -19,10 +19,10 @@
  'tech' : 'sig ' :     12 : 219352
 
 rTRC : 16-bit table with 256 entries
-  ~= : 0.3802269, 1.743515, 0.01529081, 3.844358, 0.007843138, -0.2299347, 0 (Max error: 0.0201225) (D-gap: 9.07481e-06)
+  ~= : 0.3872528, 1.663193, 0.01272831, 3.844358, 0.007843138, -0.212326, 0 (Max error: 0.0204617) (D-gap: 1.67042e-05)
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
-  ~= : 0.7390234, 0.8481178, -0.009977858, 2.721141, 0.01176471, 0.03213882, 0 (Max error: 0.139824) (D-gap: 0.000125397)
+  ~= : 0.688842, 1.047989, -0.01162482, 2.721141, 0.01176471, 0.0254097, 0 (Max error: 0.0697136) (D-gap: 0.000136185)
  XYZ : | 0.64790344 0.35736084 0.15641785 |
        | 0.3829193 1.109726 0 |
        | 0.08326721 0.6792755 0.52342224 |
diff --git a/profiles/misc/SM245B.icc.txt b/profiles/misc/SM245B.icc.txt
index 5ec0bf8..b5ba7ba 100644
--- a/profiles/misc/SM245B.icc.txt
+++ b/profiles/misc/SM245B.icc.txt
@@ -20,13 +20,13 @@
  'view' : 'view' :     36 : 2368
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.0682e-05)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.0682e-05)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.0682e-05)
-Best : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (D-gap: -1.0682e-05)
-Inv  : 0.4544528, 1.000282, 2.289464e-05, 257, 4.577707e-05, -0.0001068115, -0 (D-gap: 0.000952361)
+  ~= : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.06799e-05)
+Best : 2.200449, 0.9998741, 0.0001119216, 0.00389105, 0.01176471, -2.288818e-05, 0 (D-gap: -1.06799e-05)
+Inv  : 0.4544528, 1.000282, 2.289464e-05, 257, 4.577707e-05, -0.0001144409, -0 (D-gap: 0.000944732)
  XYZ : | 0.45872498 0.32295227 0.16848755 |
        | 0.2328949 0.6973877 0.06971741 |
        | 0.01411438 0.14978027 0.9237671 |
diff --git a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
index 38a809f..9040d58 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -20,9 +20,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
+  ~= : 3.096739, 0.7520752, 0.6144606, 0.7579767, 0.01960784, -0.223053, 0 (Max error: 0.397942) (D-gap: 0.00023533)
   A1 : 16-bit table with 256 entries
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
   A2 : 16-bit table with 256 entries
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
   A3 : 16-bit table with 256 entries
+  ~= : 1.250859, 0.5047684, 9.68434, 0.7043536, 0.2078432, -17.20215, 0 (Max error: 0.104106) (D-gap: -0.0011314)
 CLUT : 16 x 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index 35f97bf..538dd0c 100644
--- a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
+++ b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
@@ -19,12 +19,13 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.7457523, 1.273102, 0.2824915, 2.132296, 0.003921569, -0.3862457, 0 (Max error: 0.00514561) (D-gap: 5.51855e-05)
+  ~= : 0.7884726, 1.139404, 0.1396209, 2.132296, 0.003921569, -0.2085495, 0 (Max error: 0.00648499) (D-gap: 0.000136248)
   A1 : 16-bit table with 256 entries
-  ~= : 1.001741, 0.9817963, -0.01540073, 1.622568, 0.01568628, 0.02549744, 0 (Max error: 0.00973541) (D-gap: 4.53889e-05)
+  ~= : 1.001599, 0.9828033, -0.01541652, 1.622568, 0.01568628, 0.02549744, 0 (Max error: 0.00873214) (D-gap: 4.53889e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 1.043713, 0.9970474, -0.01563996, 1.68677, 0.01568628, 0.02657318, 0 (Max error: 0.0163442) (D-gap: 0.000114037)
+  ~= : 1.043431, 1.001129, -0.01570399, 1.68677, 0.01568628, 0.02659988, 0 (Max error: 0.0127546) (D-gap: 0.00014074)
   A3 : 16-bit table with 256 entries
+  ~= : 2.249374, 0.7321663, 1.020107, 1.840467, 0.003921569, -1.044983, 0 (Max error: 0.515724) (D-gap: 8.38134e-05)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
diff --git a/profiles/misc/calibrated_nonzero_black.icc.txt b/profiles/misc/calibrated_nonzero_black.icc.txt
index 4555562..335843b 100644
--- a/profiles/misc/calibrated_nonzero_black.icc.txt
+++ b/profiles/misc/calibrated_nonzero_black.icc.txt
@@ -19,13 +19,13 @@
  'vcgt' : 'vcgt' :   1554 : 2180
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.00474447) (D-gap: -2.67371e-06)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.00474447) (D-gap: -2.67371e-06)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.00474447) (D-gap: -2.67371e-06)
-Best : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (D-gap: -2.67371e-06)
-Inv  : 0.4545797, 1.001312, -0.00129106, 3.02353, 0.001297017, 1.907349e-05, -0 (D-gap: 0.000822901)
+  ~= : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.0047445) (D-gap: -2.67266e-06)
+Best : 2.199836, 0.9994049, -3.469951e-05, 0.3307393, 0.003921569, 0.001289368, 0 (D-gap: -2.67266e-06)
+Inv  : 0.4545792, 1.001312, -0.00129106, 3.02353, 0.001297017, 1.907349e-05, -0 (D-gap: 0.000822931)
  XYZ : | 0.436615 0.38534546 0.14224243 |
        | 0.22212219 0.71839905 0.0594635 |
        | 0.012954712 0.09654236 0.71539307 |
diff --git a/profiles/misc/crbug_976551.icc.txt b/profiles/misc/crbug_976551.icc.txt
index e614b09..31b8ca9 100644
--- a/profiles/misc/crbug_976551.icc.txt
+++ b/profiles/misc/crbug_976551.icc.txt
@@ -21,13 +21,13 @@
  'mmod' : 'mmod' :     40 : 13080
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 1.408492, 1.078773, -0.08119801, 0.1001471, 0.07526882, 0.007678986, 0 (Max error: 0.0193188) (D-gap: 0.000141029)
+  ~= : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (Max error: 0.0193188) (D-gap: 0.00012941)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.430862, 1.067261, -0.07720166, 0.1031524, 0.07233626, 0.007591248, 0 (Max error: 0.0184169) (D-gap: 0.000129586)
+  ~= : 1.436169, 1.070824, -0.07745938, 0.1031524, 0.07233626, 0.007606506, 0 (Max error: 0.0184169) (D-gap: 0.000144845)
 bTRC : 16-bit table with 1024 entries
-  ~= : 1.335367, 1.135376, -0.0876781, 0.09840215, 0.07722384, 0.007732391, 0 (Max error: 0.0542429) (D-gap: 0.000133399)
-Best : 1.408492, 1.078773, -0.08119801, 0.1001471, 0.07526882, 0.007678986, 0 (D-gap: 0.000141029)
-Inv  : 0.7099792, 0.8987885, -0.006775029, 9.985308, 0.007537957, 0.0752182, -0 (D-gap: -5.06192e-05)
+  ~= : 1.508441, 1.110535, -0.05764122, 0.09840215, 0.07722384, 0.003158569, 0 (Max error: 0.0494118) (D-gap: 0.000133727)
+Best : 1.439447, 1.07946, -0.07423442, 0.1001471, 0.07526882, 0.006874084, 0 (D-gap: 0.00012941)
+Inv  : 0.6947112, 0.8958664, -0.006158261, 9.985308, 0.007537957, 0.06882095, -0 (D-gap: -0.000705704)
  XYZ : | 0.512558 0.29548645 0.15614319 |
        | 0.24029541 0.7005768 0.059127808 |
        | -0.0010375977 0.042297363 0.7836609 |
diff --git a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index f2fd642..0d8baff 100644
--- a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
@@ -16,13 +16,13 @@
  'cprt' : 'mluc' :     60 : 1944
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.231975, 1.004669, -0.004109052, 0.01206226, 0.03921569, -8.392334e-05, 0 (Max error: 0.00599737) (D-gap: 1.6209e-05)
+  ~= : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (Max error: 0.00611324) (D-gap: 2.42817e-05)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.198176, 1.010323, -0.008952959, 0.009727627, 0.02352941, 0.0001678467, 0 (Max error: 0.00397193) (D-gap: 3.42575e-05)
+  ~= : 2.197513, 1.010475, -0.009469209, 0.009727627, 0.02352941, 0.0001678467, 0 (Max error: 0.00431907) (D-gap: 2.74072e-05)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.261965, 1.004639, -0.00400689, 0.0077821, 0.01960785, 7.629395e-05, 0 (Max error: 0.00375706) (D-gap: 6.62589e-06)
-Best : 2.231975, 1.004669, -0.004109052, 0.01206226, 0.03921569, -8.392334e-05, 0 (D-gap: 1.6209e-05)
-Inv  : 0.4480337, 0.9896812, 8.305736e-05, 82.90323, 0.0004730297, 0.004089355, -0 (D-gap: -0.000455979)
+  ~= : 2.261958, 1.004646, -0.004023268, 0.0077821, 0.01960785, 6.103516e-05, 0 (Max error: 0.00378567) (D-gap: -8.82382e-06)
+Best : 2.232039, 1.004654, -0.004092941, 0.01206226, 0.03921569, -7.629395e-05, 0 (D-gap: 2.42817e-05)
+Inv  : 0.4480209, 0.9897156, 7.550931e-05, 82.90323, 0.0004730297, 0.004066467, -0 (D-gap: -0.000688914)
  XYZ : | 0.4492798 0.38258362 0.13233948 |
        | 0.22447205 0.7223511 0.05317688 |
        | 0.0011291504 0.05355835 0.7702179 |
diff --git a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
index ebf4698..5c0329d 100644
--- a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
@@ -17,13 +17,13 @@
  'MS00' : 'MS10' :   7838 : 2308
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (Max error: 0.00315094) (D-gap: 0.000186293)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (Max error: 0.00315094) (D-gap: 0.000186293)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (Max error: 0.00315094) (D-gap: 0.000186293)
-Best : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (D-gap: 0.000186293)
-Inv  : 0.4138747, 1.152328, 0.0003956206, 12.91457, 0.003036545, -0.06364441, -0 (D-gap: -0.00222457)
+  ~= : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (Max error: 0.00262654) (D-gap: 0.000209285)
+Best : 2.41034, 0.9454765, 0.05625459, 0.0774319, 0.03921569, -4.577637e-05, 0 (D-gap: 0.000209285)
+Inv  : 0.4148793, 1.144882, 5.240855e-05, 12.91457, 0.003036545, -0.05947113, -0 (D-gap: -0.00262654)
  XYZ : | 0.43547058 0.3885498 0.14019775 |
        | 0.22172546 0.7219696 0.05630493 |
        | 0.0134887695 0.08792114 0.7234802 |
diff --git a/profiles/misc/sRGB_HP.icc.txt b/profiles/misc/sRGB_HP.icc.txt
index 599c588..df48889 100644
--- a/profiles/misc/sRGB_HP.icc.txt
+++ b/profiles/misc/sRGB_HP.icc.txt
@@ -24,14 +24,14 @@
  'bTRC' : 'curv' :   2060 : 1084
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/misc/sRGB_HP_2.icc.txt b/profiles/misc/sRGB_HP_2.icc.txt
index 3dc0e47..2a939e5 100644
--- a/profiles/misc/sRGB_HP_2.icc.txt
+++ b/profiles/misc/sRGB_HP_2.icc.txt
@@ -24,14 +24,14 @@
  'bTRC' : 'curv' :   2060 : 5201
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/misc/sRGB_black_scaled.icc.txt b/profiles/misc/sRGB_black_scaled.icc.txt
index 52abfef..6774c25 100644
--- a/profiles/misc/sRGB_black_scaled.icc.txt
+++ b/profiles/misc/sRGB_black_scaled.icc.txt
@@ -23,14 +23,14 @@
  'chad' : 'sf32' :     44 : 3004
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/profiles/mobile/Display_P3_LUT.icc.txt b/profiles/mobile/Display_P3_LUT.icc.txt
index bab9c10..1582b5f 100644
--- a/profiles/mobile/Display_P3_LUT.icc.txt
+++ b/profiles/mobile/Display_P3_LUT.icc.txt
@@ -18,14 +18,14 @@
  'gTRC' : 'curv' :   2060 : 508
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.51512146 0.29197693 0.15710449 |
        | 0.24119568 0.6922455 0.0665741 |
        | -0.0010375977 0.041885376 0.7840729 |
diff --git a/profiles/mobile/sRGB_LUT.icc.txt b/profiles/mobile/sRGB_LUT.icc.txt
index ff7a567..d3f17ce 100644
--- a/profiles/mobile/sRGB_LUT.icc.txt
+++ b/profiles/mobile/sRGB_LUT.icc.txt
@@ -18,14 +18,14 @@
  'gTRC' : 'curv' :   2060 : 520
 
 rTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
+  ~= : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (Max error: 0.00197129) (D-gap: 0.000160849) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (D-gap: 0.000180295)
-Inv  : 0.4166695, 1.13739, -0.0002039236, 12.86827, 0.003494316, -0.05495453, -0 (D-gap: -0.00216441)
+Best : 2.395543, 0.9495392, 0.04946931, 0.07771055, 0.04496579, 0.0003471375, 0 (D-gap: 0.000160849) (~sRGB)
+Inv  : 0.4174418, 1.132225, -0.0003930377, 12.86827, 0.003494316, -0.05207062, -0 (D-gap: -0.00197129)
  XYZ : | 0.43603516 0.38511658 0.14305115 |
        | 0.2224884 0.7169037 0.06060791 |
        | 0.013916016 0.09706116 0.71391296 |
diff --git a/profiles/sRGB_Facebook.icc.txt b/profiles/sRGB_Facebook.icc.txt
index 0f9c600..88c71f0 100644
--- a/profiles/sRGB_Facebook.icc.txt
+++ b/profiles/sRGB_Facebook.icc.txt
@@ -17,14 +17,14 @@
  'bTRC' : 'curv' :     64 : 460
 
 rTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
 gTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
 bTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
+  ~= : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (Max error: 0.00213668) (D-gap: 0.000140188) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (D-gap: 0.000151274) (~sRGB)
-Inv  : 0.4188614, 1.125809, -0.0004423458, 12.9133, 0.003097581, -0.05030823, -0 (D-gap: -0.00200752)
+Best : 2.38273, 0.9532852, 0.04522569, 0.07743954, 0.04, 0.0005531311, 0 (D-gap: 0.000140188) (~sRGB)
+Inv  : 0.4196866, 1.120888, -0.0006199979, 12.9133, 0.003097581, -0.04740906, -0 (D-gap: -0.00190929)
  XYZ : | 0.43606567 0.3851471 0.1430664 |
        | 0.2224884 0.71687317 0.06060791 |
        | 0.013916016 0.097076416 0.71409607 |
diff --git a/skcms.cc b/skcms.cc
index b26e4d5..b52c53c 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -1672,7 +1672,8 @@
     // No matter where we start, dx should always represent N even steps from 0 to 1.
     const float dx = 1.0f / (N-1);
 
-    for (int j = 0; j < 3/*TODO: tune*/; j++) {
+    // As far as we can tell, 1 Gauss-Newton step won't converge, and 3 steps is no better than 2.
+    for (int j = 0; j < 2; j++) {
         // These extra constraints a >= 0 and ad+b >= 0 are not modeled in the optimization.
         // We don't really know how to fix up a if it goes negative.
         if (P[1] < 0) {