calculate k with one fewer divide

Updated the tests to print out how close we are to roundtripping 1.0f.

With this change, the computed inverses actually become closer to the
goal than the current hardcoded inverse:

    ~/skcms (master↑1|✔) $ out/clang/tests
    0x1.fff50ap-1 0.999916, -1403 ulps from 1.0f   (hardcoded)
    0x1.0001p+0 1.00002, 128 ulps from 1.0f        (sRGB2)
    0x1.fffc0ap-1 0.99997, -507 ulps from 1.0f     (inv2)

This a^-g version also beats 1/(a^g).

Since this quality is now better than the hardcoded version, I'm
thinking of removing the hardcoded sRGB inverse and replacing it with a
once'd runtime call to invert.  That'd at least make the two obvious
ways of getting at the inverse sRGB curve agree exactly.

Guarded by SKCMS_LEGACY_TF_INVERT.

Change-Id: Ic6b301b30747b2483e5354a5cbf18065e6ef0e07
Reviewed-on: https://skia-review.googlesource.com/c/181737
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/profiles/color.org/Lower_Right.icc.txt b/profiles/color.org/Lower_Right.icc.txt
index cd2a85f..f78ec8e 100644
--- a/profiles/color.org/Lower_Right.icc.txt
+++ b/profiles/color.org/Lower_Right.icc.txt
@@ -39,11 +39,11 @@
 	3d9712 58332e 33433a 774924 337d3b 653c19 435a87
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000095 000000ff  00008000 00008080 000080ff  0000ff00 0000ff00 0000ffff
-	00820000 00820095 008200ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
+	00820000 00820095 008300ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
 	00ff0000 00ff0095 00ff00ff  00ff8000 00ff8080 00ff80ff  00ffff00 00ffff00 00ffffff
 	7f000000 7f000095 7f0000ff  7f008000 7f008080 7f0080ff  7f00ff00 7f00ff00 7f00ffff
-	7f820000 7f820095 7f8200ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
+	7f820000 7f820095 7f8300ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
 	7fff0000 7fff0095 7fff00ff  7fff8000 7fff8080 7fff80ff  7fffff00 7fffff00 7fffffff
 	ff000000 ff000095 ff0000ff  ff008000 ff008080 ff0080ff  ff00ff00 ff00ff00 ff00ffff
-	ff820000 ff820095 ff8200ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
+	ff820000 ff820095 ff8300ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
 	ffff0000 ffff0095 ffff00ff  ffff8000 ffff8080 ffff80ff  ffffff00 ffffff00 ffffffff
diff --git a/profiles/color.org/Upper_Left.icc.txt b/profiles/color.org/Upper_Left.icc.txt
index 6c2f8cb..fd886e4 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.04138637, 0.2936969, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9174) (D-gap: -2.75224e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
   M1 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138637, 0.2936969, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9174) (D-gap: -2.75224e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
   M2 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138637, 0.2936969, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9174) (D-gap: -2.75224e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
 Mtrx : | 0.959396958 0.847338140 0.314814538 -0.503105104 |
        | 0.489433438 1.577521086 0.133390293 -0.521812081 |
        | 0.030578148 0.213589266 1.570868373 -0.430443883 |
diff --git a/profiles/color.org/sRGB2014.icc.txt b/profiles/color.org/sRGB2014.icc.txt
index 37d8208..c1106d2 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
index 581407f..ef6bf92 100644
--- a/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
+++ b/profiles/color.org/sRGB_v4_ICC_preference.icc.txt
@@ -48,10 +48,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	000b0b0b 00000078 000000f2  00006900 00006d78 00007fff  0000c600 0000d668 0000edff
 	00730b00 0068007d 006800f5  00755b00 007f7f7f 008087ff  0060c800 0076e168 007cf8ff
-	00c41400 00c20070 00b500e0  00e16200 00f67f7c 00e57cff  00e3bb00 00fbe34b 00ffffff
+	00c41400 00c20070 00b500e0  00e26200 00f67f7c 00e57cff  00e3bb00 00fbe44b 00ffffff
 	7f0b0b0b 7f000078 7f0000f2  7f006900 7f006d78 7f007fff  7f00c600 7f00d668 7f00edff
 	7f730b00 7f68007d 7f6800f5  7f755b00 7f7f7f7f 7f8087ff  7f60c800 7f76e168 7f7cf8ff
-	7fc41400 7fc20070 7fb500e0  7fe16200 7ff67f7c 7fe57cff  7fe3bb00 7ffbe34b 7fffffff
+	7fc41400 7fc20070 7fb500e0  7fe26200 7ff67f7c 7fe57cff  7fe3bb00 7ffbe44b 7fffffff
 	ff0b0b0b ff000078 ff0000f2  ff006900 ff006d78 ff007fff  ff00c600 ff00d668 ff00edff
 	ff730b00 ff68007d ff6800f5  ff755b00 ff7f7f7f ff8087ff  ff60c800 ff76e168 ff7cf8ff
-	ffc41400 ffc20070 ffb500e0  ffe16200 fff67f7c ffe57cff  ffe3bb00 fffbe34b ffffffff
+	ffc41400 ffc20070 ffb500e0  ffe26200 fff67f7c ffe57cff  ffe3bb00 fffbe44b ffffffff
diff --git a/profiles/fuzz/inverse_tf_not_invertible.icc.txt b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
index c1a00c3..b34d933 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.5631943, 0.8488205, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781518) (D-gap: -0.000447828)
+  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781251) (D-gap: -0.00038107)
 gTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5631943, 0.8488205, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781518) (D-gap: -0.000447828)
+  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781251) (D-gap: -0.00038107)
 bTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5631943, 0.8488205, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781518) (D-gap: -0.000447828)
-Best : 5.117306, 0.5631943, 0.8488205, 0.07707816, 0.04078144, -0.492599, 0 (D-gap: -0.000447828)
-Inv  : 0.1954153, 18.86816, 9.294439, 12.97384, 0.003143358, -1.507154, -0 (D-gap: -6.09793e-05)
+  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781251) (D-gap: -0.00038107)
+Best : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.492599, 0 (D-gap: -0.00038107)
+Inv  : 0.1954153, 18.88403, 9.302257, 12.97384, 0.003143358, -1.507154, -0 (D-gap: 0.000190791)
  XYZ : | 0.436065674 0.385070801 0.143051147 |
        | 0.222503662 0.716873169 0.060607910 |
        | 0.013916016 0.097061157 0.713989258 |
diff --git a/profiles/fuzz/one_d_clut.icc.txt b/profiles/fuzz/one_d_clut.icc.txt
index 3c3a6eb..ddb08d7 100644
--- a/profiles/fuzz/one_d_clut.icc.txt
+++ b/profiles/fuzz/one_d_clut.icc.txt
@@ -20,7 +20,7 @@
 CLUT : 2 (16 bpp)
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
-  ~= : 13.98541, 0.5743484, 0.6578237, 0.9400777, 0.05882353, 0.04953171, 0 (Max error: 0.410781) (D-gap: -7.51019e-06)
+  ~= : 13.98541, 0.5743599, 0.6578368, 0.9400777, 0.05882353, 0.04953171, 0 (Max error: 0.410506) (D-gap: -5.75185e-06)
   M1 : 16-bit table with 256 entries
   M2 : 16-bit table with 256 entries
 Mtrx : | 2.202053785 1.944855571 4.722492695 -0.733356714 |
diff --git a/profiles/misc/AdobeRGB.icc.txt b/profiles/misc/AdobeRGB.icc.txt
index cd2a85f..f78ec8e 100644
--- a/profiles/misc/AdobeRGB.icc.txt
+++ b/profiles/misc/AdobeRGB.icc.txt
@@ -39,11 +39,11 @@
 	3d9712 58332e 33433a 774924 337d3b 653c19 435a87
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000095 000000ff  00008000 00008080 000080ff  0000ff00 0000ff00 0000ffff
-	00820000 00820095 008200ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
+	00820000 00820095 008300ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
 	00ff0000 00ff0095 00ff00ff  00ff8000 00ff8080 00ff80ff  00ffff00 00ffff00 00ffffff
 	7f000000 7f000095 7f0000ff  7f008000 7f008080 7f0080ff  7f00ff00 7f00ff00 7f00ffff
-	7f820000 7f820095 7f8200ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
+	7f820000 7f820095 7f8300ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
 	7fff0000 7fff0095 7fff00ff  7fff8000 7fff8080 7fff80ff  7fffff00 7fffff00 7fffffff
 	ff000000 ff000095 ff0000ff  ff008000 ff008080 ff0080ff  ff00ff00 ff00ff00 ff00ffff
-	ff820000 ff820095 ff8200ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
+	ff820000 ff820095 ff8300ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
 	ffff0000 ffff0095 ffff00ff  ffff8000 ffff8080 ffff80ff  ffffff00 ffffff00 ffffffff
diff --git a/profiles/misc/Apple_Color_LCD.icc.txt b/profiles/misc/Apple_Color_LCD.icc.txt
index 5e71225..c4163ce 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.444335938 0.379440308 0.140411377 |
        | 0.224761963 0.726165771 0.049072266 |
        | 0.005477905 0.077972412 0.741455078 |
diff --git a/profiles/misc/BenQ_GL2450.icc.txt b/profiles/misc/BenQ_GL2450.icc.txt
index 4a9a316..adc0572 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.001823, -0, 0, 0, 0, 0 (Max error: 0.0127077)
+  ~= : 1.993112, 1.001831, -0, 0, 0, 0, 0 (Max error: 0.0127077)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001823, -0, 0, 0, 0, 0 (Max error: 0.0127077)
+  ~= : 1.993112, 1.001831, -0, 0, 0, 0, 0 (Max error: 0.0127077)
 bTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001823, -0, 0, 0, 0, 0 (Max error: 0.0127077)
-Best : 1.993112, 1.001823, -0, 0, 0, 0, 0
-Inv  : 0.5017281, 0.9963722, -0, 0, 0, 0, 0
+  ~= : 1.993112, 1.001831, -0, 0, 0, 0, 0 (Max error: 0.0127077)
+Best : 1.993112, 1.001831, -0, 0, 0, 0, 0
+Inv  : 0.5017281, 0.9963799, -0, 0, 0, 0, 0
  XYZ : | 0.388397217 0.402297974 0.201400757 |
        | 0.193893433 0.741104126 0.065093994 |
        | 0.010299683 0.061203003 1.014602661 |
@@ -47,11 +47,11 @@
 	69b116 482b46 465056 5d3d36 609856 4e3226 636cbc
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000082 000000f3  00008a16 00008a84 000088f4  0000ff32 0000ff8a 0000fff7
-	00a00014 00a00084 00a000f4  009e8821 009d8786 009d86f5  0095ff38 0094ff8c 0094fff8
-	00ff002f 00ff0089 00ff00f7  00ff8035 00ff808b 00ff7ef7  00fffe45 00fffe91 00fffdfa
+	00a00014 00a00084 00a000f4  009e8821 009e8786 009d86f5  0095ff38 0095ff8c 0094fff8
+	00ff002f 00ff0089 00ff00f7  00ff8035 00ff808b 00ff7ef8  00fffe45 00fffe91 00fffdfa
 	7f000000 7f000082 7f0000f3  7f008a16 7f008a84 7f0088f4  7f00ff32 7f00ff8a 7f00fff7
-	7fa00014 7fa00084 7fa000f4  7f9e8821 7f9d8786 7f9d86f5  7f95ff38 7f94ff8c 7f94fff8
-	7fff002f 7fff0089 7fff00f7  7fff8035 7fff808b 7fff7ef7  7ffffe45 7ffffe91 7ffffdfa
+	7fa00014 7fa00084 7fa000f4  7f9e8821 7f9e8786 7f9d86f5  7f95ff38 7f95ff8c 7f94fff8
+	7fff002f 7fff0089 7fff00f7  7fff8035 7fff808b 7fff7ef8  7ffffe45 7ffffe91 7ffffdfa
 	ff000000 ff000082 ff0000f3  ff008a16 ff008a84 ff0088f4  ff00ff32 ff00ff8a ff00fff7
-	ffa00014 ffa00084 ffa000f4  ff9e8821 ff9d8786 ff9d86f5  ff95ff38 ff94ff8c ff94fff8
-	ffff002f ffff0089 ffff00f7  ffff8035 ffff808b ffff7ef7  fffffe45 fffffe91 fffffdfa
+	ffa00014 ffa00084 ffa000f4  ff9e8821 ff9e8786 ff9d86f5  ff95ff38 ff95ff8c ff94fff8
+	ffff002f ffff0089 ffff00f7  ffff8035 ffff808b ffff7ef8  fffffe45 fffffe91 fffffdfa
diff --git a/profiles/misc/BenQ_RL2455.icc.txt b/profiles/misc/BenQ_RL2455.icc.txt
index 06a50db..67a0904 100644
--- a/profiles/misc/BenQ_RL2455.icc.txt
+++ b/profiles/misc/BenQ_RL2455.icc.txt
@@ -31,12 +31,12 @@
  'K071' : 'ui08' :     10 : 52024
 
 rTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994164, 0.0006290726, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -1.03563e-06)
+  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -3.20375e-07)
 gTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994164, 0.0006290726, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -1.03563e-06)
+  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -3.20375e-07)
 bTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994164, 0.0006290726, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -1.03563e-06)
-Best : 2.201602, 0.9994164, 0.0006290726, 0.189456, 0.25, -9.85422e-05, 0 (D-gap: -1.03563e-06)
+  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -3.20375e-07)
+Best : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -9.85422e-05, 0 (D-gap: -3.20375e-07)
 Inv  : 0.4542148, 1.001282, 9.86685e-05, 5.27827, 0.047364, -0.0006294399, -0 (D-gap: -1.90735e-06)
  XYZ : | 0.465194702 0.355957031 0.143020630 |
        | 0.231887817 0.681533813 0.086563110 |
@@ -44,11 +44,11 @@
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000076, -0.0001397258, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -7.22503e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
   A1 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000076, -0.0001397258, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -7.22503e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
   A2 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000076, -0.0001397258, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -7.22503e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
 CLUT : 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
@@ -72,11 +72,11 @@
 	2e510d 241616 1c231d 311f11 284520 29190c 273143
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000060 000000c2  00015b00 00005a5e 000058c1  0002b800 0000b859 0000b7bf
-	005d1100 005c0d5e 005c00c1  005d5d00 005c5d5c 005c5bc0  005db900 005cb957 005bb8be
-	00bc2c00 00bc2b56 00bb26be  00bc6400 00bc6455 00bb62be  00bcbc00 00bcbc4f 00bbbbbc
+	005d1100 005c0d5e 005c00c1  005d5d00 005c5d5c 005c5bc1  005db900 005cb957 005cb8be
+	00bc2c00 00bc2b56 00bc26be  00bc6400 00bc6455 00bb63be  00bcbc00 00bcbc4f 00bbbbbc
 	7f000000 7f000060 7f0000c2  7f015b00 7f005a5e 7f0058c1  7f02b800 7f00b859 7f00b7bf
-	7f5d1100 7f5c0d5e 7f5c00c1  7f5d5d00 7f5c5d5c 7f5c5bc0  7f5db900 7f5cb957 7f5bb8be
-	7fbc2c00 7fbc2b56 7fbb26be  7fbc6400 7fbc6455 7fbb62be  7fbcbc00 7fbcbc4f 7fbbbbbc
+	7f5d1100 7f5c0d5e 7f5c00c1  7f5d5d00 7f5c5d5c 7f5c5bc1  7f5db900 7f5cb957 7f5cb8be
+	7fbc2c00 7fbc2b56 7fbc26be  7fbc6400 7fbc6455 7fbb63be  7fbcbc00 7fbcbc4f 7fbbbbbc
 	ff000000 ff000060 ff0000c2  ff015b00 ff005a5e ff0058c1  ff02b800 ff00b859 ff00b7bf
-	ff5d1100 ff5c0d5e ff5c00c1  ff5d5d00 ff5c5d5c ff5c5bc0  ff5db900 ff5cb957 ff5bb8be
-	ffbc2c00 ffbc2b56 ffbb26be  ffbc6400 ffbc6455 ffbb62be  ffbcbc00 ffbcbc4f ffbbbbbc
+	ff5d1100 ff5c0d5e ff5c00c1  ff5d5d00 ff5c5d5c ff5c5bc1  ff5db900 ff5cb957 ff5cb8be
+	ffbc2c00 ffbc2b56 ffbc26be  ffbc6400 ffbc6455 ffbb63be  ffbcbc00 ffbcbc4f ffbbbbbc
diff --git a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
index 1d13f87..46a6469 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.9660149, 0.08075163, 0.8236057, 0.02352941, -0.05260923, 0 (Max error: 0.00188172) (D-gap: -2.29701e-05)
+  ~= : 1.160069, 0.9661255, 0.08076088, 0.8236057, 0.02352941, -0.05260923, 0 (Max error: 0.00186646) (D-gap: -1.39102e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.086079, 1.063515, -0.19075, 0.8082388, 0.1803922, 0.145188, 0 (Max error: 0.00696313) (D-gap: -2.23517e-07)
+  ~= : 1.086079, 1.063683, -0.1907801, 0.8082388, 0.1803922, 0.145188, 0 (Max error: 0.0069555) (D-gap: -1.3411e-07)
   A2 : 16-bit table with 256 entries
-  ~= : 1.187467, 0.9798889, 0.0385357, 0.7821012, 0.03529412, -0.01718035, 0 (Max error: 0.00421613) (D-gap: -8.43219e-06)
+  ~= : 1.187467, 0.9799652, 0.03853871, 0.7821012, 0.03529412, -0.01718035, 0 (Max error: 0.00421613) (D-gap: -4.14066e-06)
   A3 : 16-bit table with 256 entries
-  ~= : 4.09466, 0.6916313, 0.7610201, 0.7655641, 0.01568628, -0.3344684, 0 (Max error: 0.548935) (D-gap: -0.00014088)
+  ~= : 4.09466, 0.6916656, 0.7610579, 0.7655641, 0.01568628, -0.3344684, 0 (Max error: 0.549026) (D-gap: -7.22157e-05)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -43,11 +43,11 @@
 	010101 0b0d15 0e0906 181613 070503 16130f 201e24
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	ff010000 ff010210 ff050621  ff010700 ff020f0a ff051520  ff041400 ff041b00 ff04221f
-	ff030000 ff040014 ff050024  ff0b0200 ff0a090c ff0a0f21  ff130f00 ff121800 ff101e1d
+	ff030000 ff040014 ff050024  ff0b0200 ff0a090c ff0a0f21  ff130f00 ff121800 ff101f1d
 	ff0c0100 ff0a0017 ff050028  ff170100 ff15000e ff110323  ff220200 ff1f1000 ff1c1819
-	ff181d09 ff171859 ff14108a  ff1f3e00 ff174c5a ff085c92  ff255c00 ff147758 ff00919c
+	ff181d09 ff171859 ff14108a  ff1f3e00 ff174c5a ff085c92  ff255c00 ff147759 ff00919c
 	ff361b0a ff33135a ff32048b  ff493f00 ff4a4e58 ff4c5f93  ff5b5f00 ff5f7b54 ff63969b
 	ff55160a ff50055c ff4d008c  ff714000 ff745056 ff796293  ff8c6200 ff95804c ff9f9d9a
-	ff292d1c ff252391 ff1b00e0  ff326300 ff237c94 ff0094f0  ff379000 ff11be95 ff00ecff
-	ff562d19 ff531e91 ff4f00e1  ff736700 ff768092 ff7999f0  ff8f9600 ff96c68d ff9af4ff
-	ff832912 ff7e1391 ff7a00e0  ffb36a00 ffba858e ffc19eef  ffe09d00 fff0cf80 fffffefc
+	ff292e1c ff252391 ff1b00e1  ff326300 ff237c94 ff0094f1  ff379000 ff11be95 ff00ecff
+	ff562d19 ff531f91 ff4f00e1  ff746700 ff778092 ff7999f0  ff8f9600 ff96c68d ff9af5ff
+	ff832912 ff7e1391 ff7a00e1  ffb36a00 ffba858e ffc19eef  ffe09d00 fff0cf80 fffffefc
diff --git a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
index 6b85d95..584faa9 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.018631, -0.007989263, 0.8365758, 0.007843138, 0.006561379, 0 (Max error: 0.0166625) (D-gap: 0)
+  ~= : 1.05448, 1.018715, -0.007989922, 0.8365758, 0.007843138, 0.006561379, 0 (Max error: 0.0166701) (D-gap: 0)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117216, 1.017532, 0.01265455, 0.7665369, 0.007843138, -0.007083124, 0 (Max error: 0.0235106) (D-gap: -2.36277e-06)
+  ~= : 1.117216, 1.017609, 0.0126555, 0.7665369, 0.007843138, -0.007083124, 0 (Max error: 0.0235068) (D-gap: -1.23028e-06)
   A2 : 16-bit table with 256 entries
-  ~= : 1.179158, 0.9974098, 0.03461254, 0.7081712, 0.007843138, -0.01853815, 0 (Max error: 0.0164376) (D-gap: -5.96978e-07)
+  ~= : 1.179158, 0.9974213, 0.03461293, 0.7081712, 0.007843138, -0.01853815, 0 (Max error: 0.0164376) (D-gap: -2.3935e-07)
   A3 : 16-bit table with 256 entries
-  ~= : 2.925117, 0.6722183, 0.6647099, 0.7159533, 0.007843137, -0.304297, 0 (Max error: 0.359878) (D-gap: -2.91723e-05)
+  ~= : 2.925117, 0.6722412, 0.6647326, 0.7159533, 0.007843137, -0.304297, 0 (Max error: 0.359909) (D-gap: 1.3453e-06)
 CLUT : 11 x 11 x 11 x 11 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -51,7 +51,7 @@
 	ff0b0100 ff060014 ff020025  ff170100 ff14030c ff110921  ff200b00 ff1e1600 ff1c1d1c
 	ff1a201e ff11195a ff041288  ff234000 ff174e5c ff005b91  ff285f00 ff157759 ff00909b
 	ff381b1e ff33155c ff2f0a8b  ff4a4000 ff4c515b ff4c5f92  ff5b6000 ff607b55 ff61959a
-	ff52141f ff500c5d ff4d008c  ff704000 ff765359 ff796392  ff8b6200 ff96804e ff9c9c9b
-	ff313231 ff262992 ff150ce2  ff3b6600 ff2a7b94 ff0091f1  ff419600 ff21c093 ff00edff
+	ff52141f ff500c5d ff4d008c  ff704000 ff765359 ff796393  ff8b6200 ff96804e ff9c9c9b
+	ff313231 ff262992 ff150ce2  ff3b6600 ff2a7b94 ff0092f1  ff419600 ff21c093 ff00edff
 	ff5a2e2f ff562593 ff5100e3  ff786700 ff7b8093 ff7b98f1  ff939900 ff9ac78b ff9bf5ff
 	ff84282f ff811d94 ff7e00e4  ffb46900 ffbe848f ffc49ef0  ffe39e00 fff5cf7f fffffefc
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index 1a388e6..ea11a44 100644
--- a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
@@ -23,17 +23,17 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.3393432, 25.72925, 12.38516, 1.200778, 0.01960784, -2.357529, 0 (Max error: 0.102451) (D-gap: -0.000214456)
+  ~= : 0.3393432, 25.73071, 12.38586, 1.200778, 0.01960784, -2.357529, 0 (Max error: 0.102398) (D-gap: -0.000183938)
   A1 : 16-bit table with 256 entries
-  ~= : 0.3643354, 14.1637, 6.025175, 1.205447, 0.01960784, -1.932159, 0 (Max error: 0.0767835) (D-gap: -0.000144485)
+  ~= : 0.3643354, 14.16479, 6.025642, 1.205447, 0.01960784, -1.932159, 0 (Max error: 0.0766691) (D-gap: -9.10796e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7474884, 0.96632, -0.1072647, 1.241552, 0.1490196, 0.1003987, 0 (Max error: 0.0142888) (D-gap: -1.12057e-05)
+  ~= : 0.7474884, 0.9664421, -0.1072783, 1.241552, 0.1490196, 0.1003987, 0 (Max error: 0.0142888) (D-gap: -4.05312e-06)
   A3 : 16-bit table with 256 entries
-  ~= : 0.8032417, 0.9340668, -0.01337395, 1.182879, 0.01568628, 0.01381338, 0 (Max error: 0.0662436) (D-gap: -8.79169e-07)
+  ~= : 0.8032417, 0.9342613, -0.01337674, 1.182879, 0.01568628, 0.01381338, 0 (Max error: 0.0662131) (D-gap: -4.47035e-08)
 CLUT : 17 x 17 x 17 x 17 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 256 entries
-  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.0001477)
+  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.000120819)
   B1 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
   B2 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
 252 random bytes transformed to linear XYZD50 bytes:
@@ -52,7 +52,7 @@
 	ff100008 ff090014 ff030021  ff160100 ff120309 ff11091d  ff1c0c00 ff1b1400 ff1b1b1b
 	ff191e1d ff151b55 ff0c1584  ff243e00 ff1d4d5a ff0a5a90  ff2a5c00 ff1c7659 ff008f9b
 	ff341b1c ff321856 ff301186  ff473d00 ff4c5059 ff4d5f90  ff595d00 ff607a55 ff63959a
-	ff4c151c ff4c1357 ff4b0887  ff6b3e00 ff735257 ff796390  ff875f00 ff947f4e ff9c9c9a
+	ff4c151c ff4c1357 ff4b0887  ff6b3e00 ff735257 ff796390  ff876000 ff947f4e ff9c9c9a
 	ff30302f ff282a8d ff1300e2  ff3b6300 ff2d7a93 ff008ff4  ff429400 ff1ec093 ff00ecff
-	ff552d2d ff54288f ff4f00e3  ff756500 ff7a7f91 ff7b98f2  ff929800 ff9ac78c ff9af4ff
+	ff552d2d ff54288f ff4f00e4  ff756500 ff7a7f91 ff7b98f2  ff929800 ff9ac78c ff9af4ff
 	ff7e282b ff7f208f ff7c00e4  ffb26700 ffbc848d ffc49ef0  ffe59e00 fff5cf7e fffffefc
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index 1087563..62ba998 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.131058, -0.1330656, 0.03579767, 0.1176471, 0.004211491, 0 (Max error: 0.0831201) (D-gap: 0)
+  ~= : 1.929522, 1.131104, -0.133071, 0.03579767, 0.1176471, 0.004211491, 0 (Max error: 0.0831201) (D-gap: 0)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.287451, 0.976223, 0.03631073, 0.03112842, 0.1921569, -0.02663262, 0 (Max error: 0.0558824) (D-gap: -1.82879e-05)
+  ~= : 2.287451, 0.9762917, 0.03631328, 0.03112842, 0.1921569, -0.02663262, 0 (Max error: 0.0558824) (D-gap: -1.30427e-05)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.195809, 1.024139, -0.01592951, 0.00389105, 0.1607843, -0.01461231, 0 (Max error: 0.152941) (D-gap: -7.69203e-06)
-Best : 2.195809, 1.024139, -0.01592951, 0.00389105, 0.1607843, -0.01461231, 0 (D-gap: -7.69203e-06)
-Inv  : 0.455413, 0.9488449, 0.01386482, 257, 0.0006256199, 0.01555404, -0 (D-gap: 0)
+  ~= : 2.195809, 1.024223, -0.01593081, 0.00389105, 0.1607843, -0.01461231, 0 (Max error: 0.152941) (D-gap: -4.89061e-06)
+Best : 2.195809, 1.024223, -0.01593081, 0.00389105, 0.1607843, -0.01461231, 0 (D-gap: -4.89061e-06)
+Inv  : 0.455413, 0.9488716, 0.01386521, 257, 0.0006256199, 0.01555404, -0 (D-gap: 1.90735e-06)
  XYZ : | 0.436737061 0.380325317 0.147140503 |
        | 0.217636108 0.729843140 0.052520752 |
        | 0.002655029 0.064407349 0.757827759 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 2049 entries
-  ~= : 0.9896749, 1.006248, 0.1542419, 1.000015, 0.125, -0.1587768, 0 (Max error: 0.0184402) (D-gap: -9.11504e-05) (~Identity)
+  ~= : 0.9896749, 1.006287, 0.1542477, 1.000015, 0.125, -0.1587768, 0 (Max error: 0.0184422) (D-gap: -8.3521e-05) (~Identity)
   A1 : 16-bit table with 2049 entries
-  ~= : 0.9858807, 1.00856, 0.1456838, 1.000015, 0.125, -0.1518457, 0 (Max error: 0.0167389) (D-gap: -8.93921e-05)
+  ~= : 0.9858807, 1.008598, 0.1456893, 1.000015, 0.125, -0.1518457, 0 (Max error: 0.016737) (D-gap: -7.7948e-05)
   A2 : 16-bit table with 2049 entries
-  ~= : 0.9882579, 1.008888, 0.3841118, 1.000015, 0.03125, -0.388747, 0 (Max error: 0.0201283) (D-gap: -8.89897e-05) (~Identity)
+  ~= : 0.9882579, 1.008926, 0.3841263, 1.000015, 0.03125, -0.388747, 0 (Max error: 0.0201283) (D-gap: -7.56383e-05) (~Identity)
 CLUT : 33 x 33 x 33 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -69,11 +69,11 @@
 	315609 221416 1d231d 2e1d11 29481e 26180c 293144
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00191919 0000005b 000000bc  00005c00 00005c5c 00005abd  0000be00 0000be59 0000bdbb
-	00670400 005e005b 005d00bc  005b5d00 005b5c5c 005a5abc  0053be00 0054bd59 0052bdbb
-	00c00007 00c0005b 00bf00bd  00bf5b02 00bf5a5c 00be58bc  00bcbc00 00bcbc5a 00bbbbbb
+	00670400 005e005b 005d00bc  005b5d00 005b5c5c 005b5abc  0053be00 0054bd59 0052bdbb
+	00c00007 00c0005c 00bf00bd  00bf5b02 00bf5a5c 00be58bd  00bcbc00 00bcbc5a 00bbbcbc
 	7f191919 7f00005b 7f0000bc  7f005c00 7f005c5c 7f005abd  7f00be00 7f00be59 7f00bdbb
-	7f670400 7f5e005b 7f5d00bc  7f5b5d00 7f5b5c5c 7f5a5abc  7f53be00 7f54bd59 7f52bdbb
-	7fc00007 7fc0005b 7fbf00bd  7fbf5b02 7fbf5a5c 7fbe58bc  7fbcbc00 7fbcbc5a 7fbbbbbb
+	7f670400 7f5e005b 7f5d00bc  7f5b5d00 7f5b5c5c 7f5b5abc  7f53be00 7f54bd59 7f52bdbb
+	7fc00007 7fc0005c 7fbf00bd  7fbf5b02 7fbf5a5c 7fbe58bd  7fbcbc00 7fbcbc5a 7fbbbcbc
 	ff191919 ff00005b ff0000bc  ff005c00 ff005c5c ff005abd  ff00be00 ff00be59 ff00bdbb
-	ff670400 ff5e005b ff5d00bc  ff5b5d00 ff5b5c5c ff5a5abc  ff53be00 ff54bd59 ff52bdbb
-	ffc00007 ffc0005b ffbf00bd  ffbf5b02 ffbf5a5c ffbe58bc  ffbcbc00 ffbcbc5a ffbbbbbb
+	ff670400 ff5e005b ff5d00bc  ff5b5d00 ff5b5c5c ff5b5abc  ff53be00 ff54bd59 ff52bdbb
+	ffc00007 ffc0005c ffbf00bd  ffbf5b02 ffbf5a5c ffbe58bd  ffbcbc00 ffbcbc5a ffbbbcbc
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index 6169a2f..c73ef40 100644
--- a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
+++ b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
@@ -12,12 +12,12 @@
  'kTRC' : 'curv' :    524 : 388
 
 rTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999275, 3.289566e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
+  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
 gTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999275, 3.289566e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
+  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
 bTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999275, 3.289566e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
-Best : 1.737027, 0.9999275, 3.289566e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (D-gap: -4.22588e-08)
+  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
+Best : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -7.343342e-06, 0 (D-gap: -4.22588e-08)
 Inv  : 0.5756963, 1.000122, 7.344238e-06, 15.89691, 0.001480125, -3.289804e-05, -0 (D-gap: -2.38419e-07)
  XYZ : | 0.964202881 0.000000000 0.000000000 |
        | 0.000000000 1.000000000 0.000000000 |
@@ -36,12 +36,12 @@
 	186e19 31299f 15074b ca0507 29d500 000118 257ab9
 	24eb0a 8d1841 39654c b82832 08cc47 a41f25 2f859a
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 002700f3 004a00ff  0000c700 000093ad 000400ff  0000ff00 0000ff00 0000fcff
-	009f1600 00a300e4 00ac00ff  0090c800 00949494 009f00ff  0060ff00 0068ff00 0077fdff
+	00000000 002700f4 004a00ff  0000c700 000093ad 000400ff  0000ff00 0000ff00 0000fcff
+	009f1600 00a300e5 00ac00ff  0090c800 00949494 009f00ff  0060ff00 0068ff00 0077fdff
 	00ff2e00 00ff00bb 00ff00ff  00ffcb00 00ff991f 00ff00ff  00f7ff00 00f9ff00 00ffffff
-	7f000000 7f2700f3 7f4a00ff  7f00c700 7f0093ad 7f0400ff  7f00ff00 7f00ff00 7f00fcff
-	7f9f1600 7fa300e4 7fac00ff  7f90c800 7f949494 7f9f00ff  7f60ff00 7f68ff00 7f77fdff
+	7f000000 7f2700f4 7f4a00ff  7f00c700 7f0093ad 7f0400ff  7f00ff00 7f00ff00 7f00fcff
+	7f9f1600 7fa300e5 7fac00ff  7f90c800 7f949494 7f9f00ff  7f60ff00 7f68ff00 7f77fdff
 	7fff2e00 7fff00bb 7fff00ff  7fffcb00 7fff991f 7fff00ff  7ff7ff00 7ff9ff00 7fffffff
-	ff000000 ff2700f3 ff4a00ff  ff00c700 ff0093ad ff0400ff  ff00ff00 ff00ff00 ff00fcff
-	ff9f1600 ffa300e4 ffac00ff  ff90c800 ff949494 ff9f00ff  ff60ff00 ff68ff00 ff77fdff
+	ff000000 ff2700f4 ff4a00ff  ff00c700 ff0093ad ff0400ff  ff00ff00 ff00ff00 ff00fcff
+	ff9f1600 ffa300e5 ffac00ff  ff90c800 ff949494 ff9f00ff  ff60ff00 ff68ff00 ff77fdff
 	ffff2e00 ffff00bb ffff00ff  ffffcb00 ffff991f ffff00ff  fff7ff00 fff9ff00 ffffffff
diff --git a/profiles/misc/Generic_RGB_Gamma_18.icc.txt b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
index 58eb020d..73e5857 100644
--- a/profiles/misc/Generic_RGB_Gamma_18.icc.txt
+++ b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
@@ -39,12 +39,12 @@
 	34501e 41368d 191140 613609 5d9814 050313 5d6cac
 	64a71d 55383b 4a574a 6c4c30 58914e 5d4024 5f7291
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 00001193 000026ff  00008e00 00008f91 000092ff  0000f900 0000fa8d 0000fbff
+	00000000 00001193 000026ff  00008e00 00008f91 000093ff  0000f900 0000fa8d 0000fbff
 	00921801 00922093 00912fff  00929000 00919191 009195ff  0091fa00 0091fb8d 0091fcff
-	00ff3304 00ff3793 00ff40ff  00ff9500 00ff9792 00ff9aff  00fffd00 00fffd8d 00ffffff
-	7f000000 7f001193 7f0026ff  7f008e00 7f008f91 7f0092ff  7f00f900 7f00fa8d 7f00fbff
+	00ff3304 00ff3793 00ff40ff  00ff9600 00ff9792 00ff9aff  00fffd00 00fffd8d 00ffffff
+	7f000000 7f001193 7f0026ff  7f008e00 7f008f91 7f0093ff  7f00f900 7f00fa8d 7f00fbff
 	7f921801 7f922093 7f912fff  7f929000 7f919191 7f9195ff  7f91fa00 7f91fb8d 7f91fcff
-	7fff3304 7fff3793 7fff40ff  7fff9500 7fff9792 7fff9aff  7ffffd00 7ffffd8d 7fffffff
-	ff000000 ff001193 ff0026ff  ff008e00 ff008f91 ff0092ff  ff00f900 ff00fa8d ff00fbff
+	7fff3304 7fff3793 7fff40ff  7fff9600 7fff9792 7fff9aff  7ffffd00 7ffffd8d 7fffffff
+	ff000000 ff001193 ff0026ff  ff008e00 ff008f91 ff0093ff  ff00f900 ff00fa8d ff00fbff
 	ff921801 ff922093 ff912fff  ff929000 ff919191 ff9195ff  ff91fa00 ff91fb8d ff91fcff
-	ffff3304 ffff3793 ffff40ff  ffff9500 ffff9792 ffff9aff  fffffd00 fffffd8d ffffffff
+	ffff3304 ffff3793 ffff40ff  ffff9600 ffff9792 ffff9aff  fffffd00 fffffd8d ffffffff
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index ecb3d89..5af20ef 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.358963013 0.446350098 0.158889771 |
        | 0.195922852 0.742843628 0.061233521 |
        | 0.009674072 0.043518066 0.771713257 |
@@ -51,10 +51,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00001073 00002be8  00007e36 0000807e 000085ec  0000fe74 0000fe9f 0000fffd
 	0084000e 00830874 008229e8  007f7e3a 007f7f7f 007e84ed  006dfd76 006dfea0 006bfffd
-	00ff0027 00ff0079 00ff1dea  00ff7b44 00ff7c83 00ff82ef  00fffc7a 00fffda3 00ffffff
+	00ff0027 00ff0079 00ff1dea  00ff7b44 00ff7c83 00ff82ef  00fffc7b 00fffda3 00ffffff
 	7f000000 7f001073 7f002be8  7f007e36 7f00807e 7f0085ec  7f00fe74 7f00fe9f 7f00fffd
 	7f84000e 7f830874 7f8229e8  7f7f7e3a 7f7f7f7f 7f7e84ed  7f6dfd76 7f6dfea0 7f6bfffd
-	7fff0027 7fff0079 7fff1dea  7fff7b44 7fff7c83 7fff82ef  7ffffc7a 7ffffda3 7fffffff
+	7fff0027 7fff0079 7fff1dea  7fff7b44 7fff7c83 7fff82ef  7ffffc7b 7ffffda3 7fffffff
 	ff000000 ff001073 ff002be8  ff007e36 ff00807e ff0085ec  ff00fe74 ff00fe9f ff00fffd
 	ff84000e ff830874 ff8229e8  ff7f7e3a ff7f7f7f ff7e84ed  ff6dfd76 ff6dfea0 ff6bfffd
-	ffff0027 ffff0079 ffff1dea  ffff7b44 ffff7c83 ffff82ef  fffffc7a fffffda3 ffffffff
+	ffff0027 ffff0079 ffff1dea  ffff7b44 ffff7c83 ffff82ef  fffffc7b fffffda3 ffffffff
diff --git a/profiles/misc/Japan_Color_2001_Coated.icc.txt b/profiles/misc/Japan_Color_2001_Coated.icc.txt
index 5055d2c..1fd1e91 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.063446, -0.03336301, 0.7801556, 0.03137255, 0.02447547, 0 (Max error: 0.0512881) (D-gap: -1.86265e-09)
+  ~= : 1.010957, 1.063629, -0.03336876, 0.7801556, 0.03137255, 0.02447547, 0 (Max error: 0.0512919) (D-gap: -1.86265e-09)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117948, 1.022003, -0.02805499, 0.6270149, 0.02745098, 0.01721218, 0 (Max error: 0.009296) (D-gap: 0)
+  ~= : 1.117948, 1.022087, -0.0280573, 0.6270149, 0.02745098, 0.01721218, 0 (Max error: 0.00928837) (D-gap: 0)
   A2 : 16-bit table with 256 entries
-  ~= : 1.158917, 0.9902077, 0.0416557, 0.6193256, 0.02352941, -0.02749484, 0 (Max error: 0.0083915) (D-gap: -5.88316e-06)
+  ~= : 1.158917, 0.990242, 0.04165715, 0.6193256, 0.02352941, -0.02749484, 0 (Max error: 0.0083915) (D-gap: -4.21423e-06)
   A3 : 16-bit table with 256 entries
-  ~= : 1.834799, 0.7538223, 0.3804165, 0.3229572, 0.003921569, -0.1709625, 0 (Max error: 0.058979) (D-gap: -3.45453e-05)
+  ~= : 1.834799, 0.7538795, 0.3804454, 0.3229572, 0.003921569, -0.1709625, 0 (Max error: 0.0590553) (D-gap: -1.07035e-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/Kodak_sRGB.icc.txt b/profiles/misc/Kodak_sRGB.icc.txt
index d559b6e..d7e8cbd 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.9405975, 0.05426248, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.0061354) (D-gap: -5.10365e-07)
+  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.00614446) (D-gap: -3.46452e-07)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9405975, 0.05426248, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.0061354) (D-gap: -5.10365e-07)
+  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.00614446) (D-gap: -3.46452e-07)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9405975, 0.05426248, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.0061354) (D-gap: -5.10365e-07)
-Best : 2.416816, 0.9405975, 0.05426248, 1.070039, 0.003921569, 0.003171407, 0 (D-gap: -5.10365e-07)
-Inv  : 0.4137676, 1.159241, -0.003676425, 0.9345455, 0.004196231, -0.05768937, -0 (D-gap: -2.14623e-06)
+  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.00614446) (D-gap: -3.46452e-07)
+Best : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (D-gap: -3.46452e-07)
+Inv  : 0.4137676, 1.159515, -0.003677296, 0.9345455, 0.004196231, -0.05768937, -0 (D-gap: 4.05265e-06)
  XYZ : | 0.437637329 0.388412476 0.142410278 |
        | 0.214950562 0.712905884 0.072128296 |
        | 0.011260986 0.080718994 0.725875854 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.401436, 0.3523517, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00319327) (D-gap: -0.000132978)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
   A1 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.401436, 0.3523517, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00319327) (D-gap: -0.000132978)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.401436, 0.3523517, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00319327) (D-gap: -0.000132978)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
 CLUT : 8 x 8 x 8 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
@@ -63,10 +63,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00010000 0003007e 000a00fd  00007e15 00007e81 00057cfe  0000fc37 0000fc89 0000fbff
 	00801200 00800e7c 008000fc  007f7f01 00807f7f 00807efd  007efd31 007efd87 007ffcff
-	00ff2e00 00ff2d72 00ff26f8  00ff8500 00ff8576 00ff84f9  00feff00 00ffff7f 00fffefd
+	00ff2e00 00ff2d72 00ff26f8  00ff8500 00ff8576 00ff84f9  00ffff00 00ffff7f 00fffefd
 	7f010000 7f03007e 7f0a00fd  7f007e15 7f007e81 7f057cfe  7f00fc37 7f00fc89 7f00fbff
 	7f801200 7f800e7c 7f8000fc  7f7f7f01 7f807f7f 7f807efd  7f7efd31 7f7efd87 7f7ffcff
-	7fff2e00 7fff2d72 7fff26f8  7fff8500 7fff8576 7fff84f9  7ffeff00 7fffff7f 7ffffefd
+	7fff2e00 7fff2d72 7fff26f8  7fff8500 7fff8576 7fff84f9  7fffff00 7fffff7f 7ffffefd
 	ff010000 ff03007e ff0a00fd  ff007e15 ff007e81 ff057cfe  ff00fc37 ff00fc89 ff00fbff
 	ff801200 ff800e7c ff8000fc  ff7f7f01 ff807f7f ff807efd  ff7efd31 ff7efd87 ff7ffcff
-	ffff2e00 ffff2d72 ffff26f8  ffff8500 ffff8576 ffff84f9  fffeff00 ffffff7f fffffefd
+	ffff2e00 ffff2d72 ffff26f8  ffff8500 ffff8576 ffff84f9  ffffff00 ffffff7f fffffefd
diff --git a/profiles/misc/Lexmark_X110.icc.txt b/profiles/misc/Lexmark_X110.icc.txt
index ee93fd3..34c931c 100644
--- a/profiles/misc/Lexmark_X110.icc.txt
+++ b/profiles/misc/Lexmark_X110.icc.txt
@@ -38,10 +38,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 000206a2 00243cff  0035d000 000bcabc 0002cffe  0063ff1e 005cf3cd 003dffff
 	00ff674a 00ff68df 00f55ffd  00f6fc00 00b5b5b5 00d4c7fd  00d1d464 00e1ffe5 00d9fffe
-	00ff9f3e 00ffa4d1 00ffa4fd  00fff300 00ffddb7 00ffedfe  00fff240 00fff5aa 00ffffff
+	00ffa03e 00ffa4d1 00ffa4fd  00fff300 00ffddb7 00ffedfe  00fff240 00fff5aa 00ffffff
 	7f000000 7f0206a2 7f243cff  7f35d000 7f0bcabc 7f02cffe  7f63ff1e 7f5cf3cd 7f3dffff
 	7fff674a 7fff68df 7ff55ffd  7ff6fc00 7fb5b5b5 7fd4c7fd  7fd1d464 7fe1ffe5 7fd9fffe
-	7fff9f3e 7fffa4d1 7fffa4fd  7ffff300 7fffddb7 7fffedfe  7ffff240 7ffff5aa 7fffffff
+	7fffa03e 7fffa4d1 7fffa4fd  7ffff300 7fffddb7 7fffedfe  7ffff240 7ffff5aa 7fffffff
 	ff000000 ff0206a2 ff243cff  ff35d000 ff0bcabc ff02cffe  ff63ff1e ff5cf3cd ff3dffff
 	ffff674a ffff68df fff55ffd  fff6fc00 ffb5b5b5 ffd4c7fd  ffd1d464 ffe1ffe5 ffd9fffe
-	ffff9f3e ffffa4d1 ffffa4fd  fffff300 ffffddb7 ffffedfe  fffff240 fffff5aa ffffffff
+	ffffa03e ffffa4d1 ffffa4fd  fffff300 ffffddb7 ffffedfe  fffff240 fffff5aa ffffffff
diff --git a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
index 126947a..f8f185a 100644
--- a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
@@ -36,12 +36,12 @@
 	7b8069 7b8069 7b8069 7b8069 7b8069 060605 7b8069
 	7b8069 7b8069 7b8069 7b8069 686c59 7b8069 7b8069
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
diff --git a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
index c410a7f..ca60ce4 100644
--- a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
+++ b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
@@ -20,7 +20,7 @@
 
 rTRC : 16-bit table with 255 entries
 gTRC : 16-bit table with 255 entries
-  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000140011)
+  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000113308)
 bTRC : 16-bit table with 255 entries
  XYZ : | 0.964202881 0.000000000 0.964202881 |
        | 1.000000000 0.000000000 1.000000000 |
@@ -50,12 +50,12 @@
 	7b8069 7b8069 7b8069 7b8069 7b8069 060605 7b8069
 	7b8069 7b8069 7b8069 7b8069 686c59 7b8069 7b8069
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb  00000000 00bbbbbb 00bbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb  7f000000 7fbbbbbb 7fbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
-	ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb  ff000000 ffbbbbbb ffbbbbbb
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc  00000000 00bbbcbc 00bbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc  7f000000 7fbbbcbc 7fbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
+	ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc  ff000000 ffbbbcbc ffbbbcbc
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index d3c170f..5ac7d46 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.743065, 0.01528687, 3.844358, 0.007843138, -0.2299772, 0 (Max error: 0.0201226) (D-gap: -5.8189e-05)
+  ~= : 0.3802269, 1.743515, 0.01529081, 3.844358, 0.007843138, -0.2299772, 0 (Max error: 0.0201951) (D-gap: -3.33935e-05)
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
-  ~= : 0.7390234, 0.8478966, -0.009975255, 2.721141, 0.01176471, 0.03201343, 0 (Max error: 0.139984) (D-gap: 0)
+  ~= : 0.7390234, 0.8481178, -0.009977858, 2.721141, 0.01176471, 0.03201343, 0 (Max error: 0.13987) (D-gap: 0)
  XYZ : | 0.647903442 0.357360840 0.156417847 |
        | 0.382919312 1.109725952 0.000000000 |
        | 0.083267212 0.679275513 0.523422241 |
@@ -52,11 +52,11 @@
 	59e84c 6a3d42 3a4f41 955c27 339b69 814e1b 426388
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00010000 000000b5 00002eff  00009c00 0000928d 001a74ff  00c0ff00 0031ff00 0000ffcd
-	00ae0000 00a700b1 007100ff  00879200 008c8d8b 008787ff  00dfff00 0095ff00 0000fff2
+	00ae0000 00a700b1 007100ff  00879300 008c8d8b 008787ff  00dfff00 0095ff00 0000fff3
 	00c40000 00e40044 00d300b0  00f68e00 00ff7296 00ff00ff  00ffff00 00ffff00 00fffefc
 	7f010000 7f0000b5 7f002eff  7f009c00 7f00928d 7f1a74ff  7fc0ff00 7f31ff00 7f00ffcd
-	7fae0000 7fa700b1 7f7100ff  7f879200 7f8c8d8b 7f8787ff  7fdfff00 7f95ff00 7f00fff2
+	7fae0000 7fa700b1 7f7100ff  7f879300 7f8c8d8b 7f8787ff  7fdfff00 7f95ff00 7f00fff3
 	7fc40000 7fe40044 7fd300b0  7ff68e00 7fff7296 7fff00ff  7fffff00 7fffff00 7ffffefc
 	ff010000 ff0000b5 ff002eff  ff009c00 ff00928d ff1a74ff  ffc0ff00 ff31ff00 ff00ffcd
-	ffae0000 ffa700b1 ff7100ff  ff879200 ff8c8d8b ff8787ff  ffdfff00 ff95ff00 ff00fff2
+	ffae0000 ffa700b1 ff7100ff  ff879300 ff8c8d8b ff8787ff  ffdfff00 ff95ff00 ff00fff3
 	ffc40000 ffe40044 ffd300b0  fff68e00 ffff7296 ffff00ff  ffffff00 ffffff00 fffffefc
diff --git a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
index 46e3431..5c38e57 100644
--- a/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
+++ b/profiles/misc/PrintOpen_ISO_Coated_CMYK.icc.txt
@@ -44,7 +44,7 @@
 	ff010000 ff010000 ff020a1b  ff010000 ff010c0a ff011119  ff0d1800 ff021704 ff011918
 	ff010000 ff010000 ff02031d  ff010000 ff030303 ff050c19  ff171800 ff0c1300 ff0e1716
 	ff010000 ff010000 ff010000  ff010000 ff050100 ff100918  ff010000 ff171100 ff161614
-	ff161816 ff141852 ff0b188e  ff233c00 ff154551 ff005993  ff326800 ff008058 ff00929c
+	ff161816 ff141852 ff0b188e  ff233c00 ff154552 ff005993  ff326800 ff008058 ff00929c
 	ff351b1c ff341858 ff2d008c  ff473d00 ff454951 ff495b8d  ff646900 ff5f7954 ff5f9195
 	ff5f1720 ff6a0464 ff570092  ff744400 ff745259 ff755f8c  ff896600 ff907c4f ff999896
 	ff272727 ff292c90 ff1d2cdb  ff436d00 ff2a7790 ff0793f3  ff5aa600 ff11d1a1 ff1ae0f9
diff --git a/profiles/misc/SM245B.icc.txt b/profiles/misc/SM245B.icc.txt
index aa6da22..204a062 100644
--- a/profiles/misc/SM245B.icc.txt
+++ b/profiles/misc/SM245B.icc.txt
@@ -26,7 +26,7 @@
 bTRC : 16-bit table with 256 entries
   ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -1.221265e-05, 0 (Max error: 0.00392157) (D-gap: -6.50107e-09)
 Best : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -1.221265e-05, 0 (D-gap: -6.50107e-09)
-Inv  : 0.4544528, 1.000259, 1.221581e-05, 257, 4.577707e-05, -0.0001117568, -0 (D-gap: -2.38419e-07)
+Inv  : 0.4544528, 1.000282, 1.221609e-05, 257, 4.577707e-05, -0.0001117568, -0 (D-gap: -1.78814e-07)
  XYZ : | 0.458724976 0.322952271 0.168487549 |
        | 0.232894897 0.697387695 0.069717407 |
        | 0.014114380 0.149780273 0.923767090 |
@@ -47,10 +47,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000083 000000ff  00228100 00228178 002181ff  004dff00 004dff37 004dffef
 	00900000 00900081 009000ff  00948100 00948175 009481ff  00a0ff00 00a0ff30 00a0ffee
-	00ff0000 00ff0078 00ff00ff  00ff8100 00ff816c 00ff81fc  00ffff00 00ffff01 00ffffea
+	00ff0000 00ff0078 00ff00ff  00ff8100 00ff816c 00ff81fc  00ffff00 00ffff01 00ffffeb
 	7f000000 7f000083 7f0000ff  7f228100 7f228178 7f2181ff  7f4dff00 7f4dff37 7f4dffef
 	7f900000 7f900081 7f9000ff  7f948100 7f948175 7f9481ff  7fa0ff00 7fa0ff30 7fa0ffee
-	7fff0000 7fff0078 7fff00ff  7fff8100 7fff816c 7fff81fc  7fffff00 7fffff01 7fffffea
+	7fff0000 7fff0078 7fff00ff  7fff8100 7fff816c 7fff81fc  7fffff00 7fffff01 7fffffeb
 	ff000000 ff000083 ff0000ff  ff228100 ff228178 ff2181ff  ff4dff00 ff4dff37 ff4dffef
 	ff900000 ff900081 ff9000ff  ff948100 ff948175 ff9481ff  ffa0ff00 ffa0ff30 ffa0ffee
-	ffff0000 ffff0078 ffff00ff  ffff8100 ffff816c ffff81fc  ffffff00 ffffff01 ffffffea
+	ffff0000 ffff0078 ffff00ff  ffff8100 ffff816c ffff81fc  ffffff00 ffffff01 ffffffeb
diff --git a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
index 6bca0af..0fcc9e0 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -42,9 +42,9 @@
 	ff010000 ff010000 ff010000  ff010000 ff010000 ff010000  ff010000 ff010000 ff010000
 	ff010000 ff010000 ff010000  ff010000 ff010000 ff010000  ff010000 ff010000 ff010000
 	ff010000 ff010000 ff010000  ff010000 ff010000 ff010000  ff010000 ff010000 ff010000
-	ff1a1219 ff16104d ff110080  ff1e3900 ff16474c ff015889  ff1f5a00 ff117144 ff008d8f
+	ff1a1219 ff16104d ff110080  ff1e3900 ff16474c ff01588a  ff1f5a00 ff117144 ff008d8f
 	ff300d1d ff2f0950 ff2c0081  ff433900 ff434851 ff42598b  ff595d00 ff59744b ff599193
 	ff45061e ff450051 ff450082  ff663900 ff694854 ff6d5b8c  ff886000 ff8e774d ff959493
-	ff332734 ff2e2389 ff2400dd  ff396700 ff2c7f88 ff009bed  ff3d9e00 ff25c579 ff00f3f6
+	ff332734 ff2e2389 ff2400dd  ff396700 ff2c7f88 ff009bed  ff3d9e00 ff25c57a ff00f3f6
 	ff581f39 ff56178d ff5200df  ff786800 ff788090 ff779df1  ff9ca300 ff9dc985 ff9df9fc
-	ff7b113b ff7b008f ff7b00e1  ffb26800 ffb68094 ffbc9ff3  ffeba800 fff3ce8a fffffefc
+	ff7b113c ff7b0090 ff7b00e1  ffb26800 ffb68094 ffbc9ff3  ffeba800 fff3ce8a fffffefc
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index 7e2f710..42e1fa6 100644
--- a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
+++ b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
@@ -19,11 +19,11 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.7457523, 1.272858, 0.2824373, 2.132296, 0.003921569, -0.3863242, 0 (Max error: 0.00503598) (D-gap: -8.04747e-05)
+  ~= : 0.7457523, 1.273102, 0.2824915, 2.132296, 0.003921569, -0.3863242, 0 (Max error: 0.00500357) (D-gap: -2.32542e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.001741, 0.9817276, -0.01539965, 1.622568, 0.01568628, 0.02545205, 0 (Max error: 0.00967842) (D-gap: 0)
+  ~= : 1.001741, 0.9817963, -0.01540073, 1.622568, 0.01568628, 0.02545205, 0 (Max error: 0.00967842) (D-gap: 0)
   A2 : 16-bit table with 256 entries
-  ~= : 1.043713, 0.997036, -0.01563978, 1.68677, 0.01568628, 0.02645914, 0 (Max error: 0.0163711) (D-gap: 0)
+  ~= : 1.043713, 0.9970474, -0.01563996, 1.68677, 0.01568628, 0.02645914, 0 (Max error: 0.0163635) (D-gap: 0)
   A3 : 16-bit table with 256 entries
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
@@ -48,5 +48,5 @@
 	ff381113 ff350955 ff30008a  ff4a4000 ff484a51 ff45568e  ff5e6600 ff5d7745 ff5b9094
 	ff580912 ff540055 ff52008b  ff714000 ff724b4e ff73588e  ff916800 ff947b3a ff989591
 	ff3a3635 ff342f94 ff251fec  ff466f00 ff3b7e92 ff1f93f6  ff51a500 ff40c68a ff00f1ff
-	ff653432 ff612d93 ff5b17ec  ff7e7000 ff7c808d ff7996f4  ff9da800 ff9cc97f ff99f6ff
+	ff653432 ff612d93 ff5b17ec  ff7e7000 ff7d808d ff7996f5  ff9da800 ff9cc97f ff99f6ff
 	ff92312c ff8f2890 ff8c02ea  ffbc7100 ffbd8185 ffc199f2  ffefad00 fff6cf69 fffffefc
diff --git a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
index 4088400..d16185c 100644
--- a/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
+++ b/profiles/misc/XRite_GRACol7_340_CMYK.icc.txt
@@ -45,8 +45,8 @@
 	ff000000 ff000011 ff000021  ff000700 ff000708 ff000d1d  ff001900 ff001800 ff001d1a
 	ff060007 ff000016 ff000024  ff090400 ff020409 ff000a1d  ff101500 ff0b1600 ff0c1c1a
 	ff0f0010 ff0c0019 ff000025  ff160000 ff12010e ff11081f  ff200c00 ff1e1600 ff1d1d1d
-	ff1f211f ff181f59 ff121d8b  ff294000 ff234e58 ff165b90  ff336200 ff257651 ff008d96
-	ff38201d ff371d5b ff32198f  ff4d4000 ff4e4f57 ff4a5d90  ff5f6200 ff5d774d ff5b8f93
+	ff1f211f ff181f59 ff121d8b  ff294000 ff234e58 ff165b91  ff336200 ff257751 ff008d96
+	ff38201d ff371d5b ff32198f  ff4d4100 ff4e4f57 ff4a5d90  ff5f6300 ff5d774d ff5b8f93
 	ff531d18 ff52195a ff510c8f  ff704000 ff735056 ff735d8f  ff8d6300 ff907a46 ff93928f
 	ff343434 ff2f3596 ff2026e7  ff446a00 ff347e92 ff0c90f0  ff4c9b00 ff2abe89 ff00f0ff
 	ff60352b ff5d3496 ff5521ea  ff7c6b00 ff797e8e ff7494ef  ff959c00 ff94c283 ff98f6ff
diff --git a/profiles/misc/calibrated_nonzero_black.icc.txt b/profiles/misc/calibrated_nonzero_black.icc.txt
index 609c96f..9dea0d9 100644
--- a/profiles/misc/calibrated_nonzero_black.icc.txt
+++ b/profiles/misc/calibrated_nonzero_black.icc.txt
@@ -19,12 +19,12 @@
  'vcgt' : 'vcgt' :   1554 : 2180
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994011, -3.508657e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
+  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994011, -3.508657e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
+  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994011, -3.508657e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
-Best : 2.199834, 0.9994011, -3.508657e-05, 0.3307393, 0.003921569, 0.001292041, 0 (D-gap: -1.16415e-10)
+  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
+Best : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001292041, 0 (D-gap: -1.16415e-10)
 Inv  : 0.4545797, 1.001312, -0.001293737, 3.02353, 0.001297017, 3.51076e-05, -0 (D-gap: -4.47035e-08)
  XYZ : | 0.436614990 0.385345459 0.142242432 |
        | 0.222122192 0.718399048 0.059463501 |
diff --git a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index 66b6cbb..eb33b87 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.004654, -0.00410899, 0.01206226, 0.03921569, -0.0001003884, 0 (Max error: 0.00578362) (D-gap: -2.70957e-07)
+  ~= : 2.231975, 1.004669, -0.004109052, 0.01206226, 0.03921569, -0.0001003884, 0 (Max error: 0.00578315) (D-gap: -2.56056e-07)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.198176, 1.010284, -0.008952621, 0.009727627, 0.02352941, 0.0001335621, 0 (Max error: 0.00396806) (D-gap: -3.45608e-08)
+  ~= : 2.198176, 1.010323, -0.008952959, 0.009727627, 0.02352941, 0.0001335621, 0 (Max error: 0.00397569) (D-gap: -2.71102e-08)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.261965, 1.004623, -0.004006829, 0.0077821, 0.01960785, 6.96676e-05, 0 (Max error: 0.00376099) (D-gap: -3.71074e-09)
-Best : 2.231975, 1.004654, -0.00410899, 0.01206226, 0.03921569, -0.0001003884, 0 (D-gap: -2.70957e-07)
-Inv  : 0.4480337, 0.989666, 9.935095e-05, 82.90323, 0.0004730297, 0.004089955, -0 (D-gap: 0)
+  ~= : 2.261965, 1.004639, -0.00400689, 0.0077821, 0.01960785, 6.96676e-05, 0 (Max error: 0.0037629) (D-gap: -4.51109e-10)
+Best : 2.231975, 1.004669, -0.004109052, 0.01206226, 0.03921569, -0.0001003884, 0 (D-gap: -2.56056e-07)
+Inv  : 0.4480337, 0.9896812, 9.935247e-05, 82.90323, 0.0004730297, 0.004089955, -0 (D-gap: 2.38419e-07)
  XYZ : | 0.449279785 0.382583618 0.132339478 |
        | 0.224472046 0.722351074 0.053176880 |
        | 0.001129150 0.053558350 0.770217896 |
@@ -41,11 +41,11 @@
 	63ad10 44282b 384538 5d3b20 528e39 4e3016 4e6089
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000080 000000ff  00008003 00007f80 00007dff  0000ff0e 0000ff81 0000ffff
-	00810000 0081007d 007d00ff  007e7f00 007d7f7e 00797dff  006fff00 006eff7f 0069ffff
-	00ff0000 00ff0072 00ff00fe  00ff7f00 00ff7e72 00ff7cff  00ffff00 00ffff73 00ffffff
+	00820000 0081007d 007d00ff  007e7f00 007d7f7e 00797dff  006fff00 006eff7f 0069ffff
+	00ff0000 00ff0072 00ff00fe  00ff7f00 00ff7f72 00ff7cff  00ffff00 00ffff73 00ffffff
 	7f000000 7f000080 7f0000ff  7f008003 7f007f80 7f007dff  7f00ff0e 7f00ff81 7f00ffff
-	7f810000 7f81007d 7f7d00ff  7f7e7f00 7f7d7f7e 7f797dff  7f6fff00 7f6eff7f 7f69ffff
-	7fff0000 7fff0072 7fff00fe  7fff7f00 7fff7e72 7fff7cff  7fffff00 7fffff73 7fffffff
+	7f820000 7f81007d 7f7d00ff  7f7e7f00 7f7d7f7e 7f797dff  7f6fff00 7f6eff7f 7f69ffff
+	7fff0000 7fff0072 7fff00fe  7fff7f00 7fff7f72 7fff7cff  7fffff00 7fffff73 7fffffff
 	ff000000 ff000080 ff0000ff  ff008003 ff007f80 ff007dff  ff00ff0e ff00ff81 ff00ffff
-	ff810000 ff81007d ff7d00ff  ff7e7f00 ff7d7f7e ff797dff  ff6fff00 ff6eff7f ff69ffff
-	ffff0000 ffff0072 ffff00fe  ffff7f00 ffff7e72 ffff7cff  ffffff00 ffffff73 ffffffff
+	ff820000 ff81007d ff7d00ff  ff7e7f00 ff7d7f7e ff797dff  ff6fff00 ff6eff7f ff69ffff
+	ffff0000 ffff0072 ffff00fe  ffff7f00 ffff7f72 ffff7cff  ffffff00 ffffff73 ffffffff
diff --git a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
index 7d5bf73..e4e8f31 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.9429932, 0.06004851, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.00319278) (D-gap: -1.43563e-06)
+  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.0030936) (D-gap: -7.5018e-07)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9429932, 0.06004851, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.00319278) (D-gap: -1.43563e-06)
+  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.0030936) (D-gap: -7.5018e-07)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9429932, 0.06004851, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.00319278) (D-gap: -1.43563e-06)
-Best : 2.41619, 0.9429932, 0.06004851, 0.0774319, 0.03921569, -0.0005303656, 0 (D-gap: -1.43563e-06)
-Inv  : 0.4138747, 1.152084, 0.000611026, 12.91457, 0.003036545, -0.06367862, -0 (D-gap: -3.34159e-06)
+  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.0030936) (D-gap: -7.5018e-07)
+Best : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0005303656, 0 (D-gap: -7.5018e-07)
+Inv  : 0.4138747, 1.152328, 0.0006111554, 12.91457, 0.003036545, -0.06367862, -0 (D-gap: 5.71832e-06)
  XYZ : | 0.435470581 0.388549805 0.140197754 |
        | 0.221725464 0.721969604 0.056304932 |
        | 0.013488770 0.087921143 0.723480225 |
diff --git a/profiles/misc/sRGB_HP.icc.txt b/profiles/misc/sRGB_HP.icc.txt
index e1702ec..7277245 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/profiles/misc/sRGB_HP_2.icc.txt b/profiles/misc/sRGB_HP_2.icc.txt
index 6d4f423..59a21be 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/profiles/misc/sRGB_black_scaled.icc.txt b/profiles/misc/sRGB_black_scaled.icc.txt
index 5681f06..b584148 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/profiles/misc/sRGB_lcms.icc.txt b/profiles/misc/sRGB_lcms.icc.txt
index 24ad6c9..77973ae 100644
--- a/profiles/misc/sRGB_lcms.icc.txt
+++ b/profiles/misc/sRGB_lcms.icc.txt
@@ -22,7 +22,7 @@
 bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
 TRCs ≈ sRGB
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.136871, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -2.46614e-05)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
  XYZ : | 0.435852051 0.385330200 0.143020630 |
        | 0.222381592 0.717041016 0.060592651 |
        | 0.013916016 0.097137451 0.713836670 |
diff --git a/profiles/mobile/Display_P3_LUT.icc.txt b/profiles/mobile/Display_P3_LUT.icc.txt
index d8a2e0d..b4107cd 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.515121460 0.291976929 0.157104492 |
        | 0.241195679 0.692245483 0.066574097 |
        | -0.001037598 0.041885376 0.784072876 |
@@ -44,11 +44,11 @@
 	4fa40f 4d2b2d 364439 683e21 448939 573317 4b5e8a
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 0000008b 000000ff  00008100 00007f7f 000075ff  0000ff00 0000ff34 0000ffff
-	00850000 0083008b 007f00ff  00808100 007f7f7f 007b75ff  006dff00 006cff34 0067ffff
+	00850000 0084008b 007f00ff  00808100 007f7f7f 007b75ff  006dff00 006cff34 0067ffff
 	00ff0000 00ff008b 00ff00ff  00ff8100 00ff7f7f 00ff75ff  00ffff00 00ffff34 00ffffff
 	7f000000 7f00008b 7f0000ff  7f008100 7f007f7f 7f0075ff  7f00ff00 7f00ff34 7f00ffff
-	7f850000 7f83008b 7f7f00ff  7f808100 7f7f7f7f 7f7b75ff  7f6dff00 7f6cff34 7f67ffff
+	7f850000 7f84008b 7f7f00ff  7f808100 7f7f7f7f 7f7b75ff  7f6dff00 7f6cff34 7f67ffff
 	7fff0000 7fff008b 7fff00ff  7fff8100 7fff7f7f 7fff75ff  7fffff00 7fffff34 7fffffff
 	ff000000 ff00008b ff0000ff  ff008100 ff007f7f ff0075ff  ff00ff00 ff00ff34 ff00ffff
-	ff850000 ff83008b ff7f00ff  ff808100 ff7f7f7f ff7b75ff  ff6dff00 ff6cff34 ff67ffff
+	ff850000 ff84008b ff7f00ff  ff808100 ff7f7f7f ff7b75ff  ff6dff00 ff6cff34 ff67ffff
 	ffff0000 ffff008b ffff00ff  ffff8100 ffff7f7f ffff75ff  ffffff00 ffffff34 ffffffff
diff --git a/profiles/mobile/Display_P3_parametric.icc.txt b/profiles/mobile/Display_P3_parametric.icc.txt
index 5889477..f2df8ae 100644
--- a/profiles/mobile/Display_P3_parametric.icc.txt
+++ b/profiles/mobile/Display_P3_parametric.icc.txt
@@ -22,7 +22,7 @@
 bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
 TRCs ≈ sRGB
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.136871, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -2.46614e-05)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
  XYZ : | 0.515121460 0.291976929 0.157104492 |
        | 0.241195679 0.692245483 0.066574097 |
        | -0.001037598 0.041885376 0.784072876 |
diff --git a/profiles/mobile/iPhone7p.icc.txt b/profiles/mobile/iPhone7p.icc.txt
index 5819048..cb2ccd6 100644
--- a/profiles/mobile/iPhone7p.icc.txt
+++ b/profiles/mobile/iPhone7p.icc.txt
@@ -21,7 +21,7 @@
 bTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
 TRCs ≈ sRGB
 Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06) (~sRGB)
-Inv  : 0.4166677, 1.136475, -0, 12.98771, 0.003002951, -0.05485449, -0 (D-gap: -7.63945e-05)
+Inv  : 0.4166677, 1.136909, -0, 12.98771, 0.003002951, -0.05485449, -0 (D-gap: -6.16126e-05)
  XYZ : | 0.515121460 0.291976929 0.157104492 |
        | 0.241195679 0.692245483 0.066574097 |
        | -0.001052856 0.041885376 0.784072876 |
diff --git a/profiles/mobile/sRGB_LUT.icc.txt b/profiles/mobile/sRGB_LUT.icc.txt
index 7b91c95..8e38845 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.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 gTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 bTRC : 16-bit table with 1024 entries (~sRGB)
-  ~= : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -1.02632e-06) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.399984, 0.9477577, 0.05209981, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -1.02632e-06) (~sRGB)
-Inv  : 0.4166695, 1.137161, 1.59779e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: -3.33786e-06)
+Best : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, -1.405069e-06, 0 (D-gap: -4.00469e-07) (~sRGB)
+Inv  : 0.4166695, 1.13739, 1.598111e-06, 12.86827, 0.003494316, -0.05497165, -0 (D-gap: 5.24521e-06)
  XYZ : | 0.436035156 0.385116577 0.143051147 |
        | 0.222488403 0.716903687 0.060607910 |
        | 0.013916016 0.097061157 0.713912964 |
diff --git a/profiles/mobile/sRGB_parametric.icc.txt b/profiles/mobile/sRGB_parametric.icc.txt
index 734e617..62ba34d 100644
--- a/profiles/mobile/sRGB_parametric.icc.txt
+++ b/profiles/mobile/sRGB_parametric.icc.txt
@@ -22,7 +22,7 @@
 bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
 TRCs ≈ sRGB
 Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (~sRGB)
-Inv  : 0.4166677, 1.136871, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -2.46614e-05)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
  XYZ : | 0.436035156 0.385116577 0.143051147 |
        | 0.222488403 0.716903687 0.060607910 |
        | 0.013916016 0.097061157 0.713912964 |
diff --git a/profiles/sRGB_Facebook.icc.txt b/profiles/sRGB_Facebook.icc.txt
index 00bd375..cdbdc5a 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.9515533, 0.04789362, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00197854) (D-gap: -6.07222e-07) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
 gTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9515533, 0.04789362, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00197854) (D-gap: -6.07222e-07) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
 bTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9515533, 0.04789362, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00197854) (D-gap: -6.07222e-07) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
 TRCs ≈ sRGB
-Best : 2.387424, 0.9515533, 0.04789362, 0.07743954, 0.04, 0.0002416283, 0 (D-gap: -6.07222e-07) (~sRGB)
-Inv  : 0.4188614, 1.125603, -0.0002719774, 12.9133, 0.003097581, -0.05033204, -0 (D-gap: -3.33786e-06)
+Best : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (D-gap: -1.11759e-08) (~sRGB)
+Inv  : 0.4188614, 1.125809, -0.0002720272, 12.9133, 0.003097581, -0.05033204, -0 (D-gap: 3.8147e-06)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/skcms.cc b/skcms.cc
index cfc22bb..c2617d3 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -1446,7 +1446,11 @@
     //   (1/a)( y -  e)^1/g - b/a = x
     //        (ky - ke)^1/g - b/a = x
 
-    float k = powf_(1.0f / src->a, src->g);  // TODO(mtklein): evaluate as 1 / powf(src->a, src->g)?
+#ifndef SKCMS_LEGACY_TF_INVERT
+    float k = powf_(src->a, -src->g);  // (1/a)^g == a^-g
+#else
+    float k = powf_(1.0f / src->a, src->g);
+#endif
     inv.g = 1.0f / src->g;
     inv.a = k;
     inv.b = -k * src->e;
diff --git a/tests.c b/tests.c
index 7abb56f..ad3ef83 100644
--- a/tests.c
+++ b/tests.c
@@ -1268,21 +1268,32 @@
                                         512, NULL) );
 }
 
+static void expect_close_to_1(float x) {
+    if (x != 1.0f) {
+        float o = 1.0f;
+        int bits, one;
+        memcpy(&bits, &x, 4);
+        memcpy(&one , &o, 4);
+
+        fprintf(stderr, "%a %g, %d ulps from 1.0f\n", x,x, bits-one);
+    }
+}
+
 static void test_TF_invert() {
     const skcms_TransferFunction *sRGB = skcms_sRGB_TransferFunction(),
                                  *inv  = skcms_sRGB_Inverse_TransferFunction();
     expect(1.0f == skcms_TransferFunction_eval(sRGB, 1.0f));
-  //expect(1.0f == skcms_TransferFunction_eval( inv, 1.0f));
+    expect_close_to_1(skcms_TransferFunction_eval( inv, 1.0f));
 
     skcms_TransferFunction sRGB2, inv2;
     expect(skcms_TransferFunction_invert( inv, &sRGB2));
     expect(skcms_TransferFunction_invert(sRGB, & inv2));
 
+    expect_close_to_1(skcms_TransferFunction_eval(&sRGB2, 1.0f));
+    expect_close_to_1(skcms_TransferFunction_eval(& inv2, 1.0f));
+
   //expect(0 == memcmp( inv, & inv2, sizeof(skcms_TransferFunction)));
   //expect(0 == memcmp(sRGB, &sRGB2, sizeof(skcms_TransferFunction)));
-
-  //expect(1.0f == skcms_TransferFunction_eval(&sRGB2, 1.0f));
-  //expect(1.0f == skcms_TransferFunction_eval(& inv2, 1.0f));
 }
 
 int main(int argc, char** argv) {