force 1.0f roundtrip through invert by tweaking e

Rewrite our stock inverse sRGB numbers using invert(sRGB),
and test that it stays that way.

Just had a feeling this all needs a guard, so guarded.
(Might even need to widen it to cover the previous CL.)

Change-Id: I6e4a1d212005c257bf5c4fa6137c4897f40e1f31
Reviewed-on: https://skia-review.googlesource.com/c/181961
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
diff --git a/profiles/color.org/Lower_Left.icc.txt b/profiles/color.org/Lower_Left.icc.txt
index 172656a..6876c33 100644
--- a/profiles/color.org/Lower_Left.icc.txt
+++ b/profiles/color.org/Lower_Left.icc.txt
@@ -20,7 +20,7 @@
 gTRC : 2.199219, 1, 0, 0, 0, 0, 0
 bTRC : 2.199219, 1, 0, 0, 0, 0, 0
 Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, -0, 0
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
  XYZ : | 0.385116577 0.143051147 0.436035156 |
        | 0.716903687 0.060607910 0.222488403 |
        | 0.097061157 0.713912964 0.013916016 |
diff --git a/profiles/color.org/Lower_Right.icc.txt b/profiles/color.org/Lower_Right.icc.txt
index f78ec8e..fbc4bcb 100644
--- a/profiles/color.org/Lower_Right.icc.txt
+++ b/profiles/color.org/Lower_Right.icc.txt
@@ -20,7 +20,7 @@
 gTRC : 2.199219, 1, 0, 0, 0, 0, 0
 bTRC : 2.199219, 1, 0, 0, 0, 0, 0
 Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, -0, 0
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
  XYZ : | 0.609741211 0.205276489 0.149185181 |
        | 0.311111450 0.625671387 0.063217163 |
        | 0.019470215 0.060867310 0.744567871 |
@@ -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 008300ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
+	00830000 00830095 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 7f8300ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
+	7f830000 7f830095 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 ff8300ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
+	ff830000 ff830095 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 fd886e4..18f32c6 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.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-05)
   M1 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-05)
   M2 : 16-bit table with 256 entries
-  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01433209, 0 (Max error: 15.9155) (D-gap: -1.60784e-05)
+  ~= : 2.360165, 0.04138994, 0.2937223, 1.290439, 0.05490196, 0.01436996, 0 (Max error: 15.916) (D-gap: 2.18004e-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 c1106d2..3ca57ad 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/profiles/fuzz/inverse_tf_not_invertible.icc.txt b/profiles/fuzz/inverse_tf_not_invertible.icc.txt
index b34d933..1eb7ec4 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.492599, 0 (Max error: 0.781251) (D-gap: -0.00038107)
+  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (Max error: 0.782032) (D-gap: 0.000930738)
 gTRC : 16-bit table with 4096 entries
-  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.492599, 0 (Max error: 0.781251) (D-gap: -0.00038107)
+  ~= : 5.117306, 0.5632095, 0.8488435, 0.07707816, 0.04078144, -0.4912872, 0 (Max error: 0.782032) (D-gap: 0.000930738)
 bTRC : 16-bit table with 4096 entries
-  ~= : 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)
+  ~= : 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)
  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 ddb08d7..b6ebfc3 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.5743599, 0.6578368, 0.9400777, 0.05882353, 0.04953171, 0 (Max error: 0.410506) (D-gap: -5.75185e-06)
+  ~= : 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
   M2 : 16-bit table with 256 entries
 Mtrx : | 2.202053785 1.944855571 4.722492695 -0.733356714 |
@@ -44,12 +44,12 @@
 	000000 000000 000000 000800 000000 000000 000000
 	000000 000800 000000 000800 000000 000800 000000
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00004300 00005f00 00008800  00004300 00005f00 00008800  00004300 00005f00 00008800
-	00004300 00005f00 00008800  00004300 00005f00 00008800  00004300 00005f00 00008800
-	00004300 00005f00 00008800  00004300 00005f00 00008800  00004300 00005f00 00008800
-	7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800
-	7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800
-	7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800  7f004300 7f005f00 7f008800
-	ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800
-	ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800
-	ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800  ff004300 ff005f00 ff008800
+	00004300 00006000 00008800  00004300 00006000 00008800  00004300 00006000 00008800
+	00004300 00006000 00008800  00004300 00006000 00008800  00004300 00006000 00008800
+	00004300 00006000 00008800  00004300 00006000 00008800  00004300 00006000 00008800
+	7f004300 7f006000 7f008800  7f004300 7f006000 7f008800  7f004300 7f006000 7f008800
+	7f004300 7f006000 7f008800  7f004300 7f006000 7f008800  7f004300 7f006000 7f008800
+	7f004300 7f006000 7f008800  7f004300 7f006000 7f008800  7f004300 7f006000 7f008800
+	ff004300 ff006000 ff008800  ff004300 ff006000 ff008800  ff004300 ff006000 ff008800
+	ff004300 ff006000 ff008800  ff004300 ff006000 ff008800  ff004300 ff006000 ff008800
+	ff004300 ff006000 ff008800  ff004300 ff006000 ff008800  ff004300 ff006000 ff008800
diff --git a/profiles/misc/AdobeColorSpin.icc.txt b/profiles/misc/AdobeColorSpin.icc.txt
index e05cc94..74b6a42 100644
--- a/profiles/misc/AdobeColorSpin.icc.txt
+++ b/profiles/misc/AdobeColorSpin.icc.txt
@@ -19,7 +19,7 @@
 gTRC : 2.199219, 1, 0, 0, 0, 0, 0
 bTRC : 2.199219, 1, 0, 0, 0, 0, 0
 Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, -0, 0
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
  XYZ : | 0.205276489 0.149185181 0.609741211 |
        | 0.625671387 0.063217163 0.311111450 |
        | 0.060867310 0.744552612 0.019470215 |
@@ -37,12 +37,12 @@
 	1a1342 784e18 2d1d04 2b7e0d 241d99 0a0501 985850
 	2a1eac 3f6213 3f343f 417d1e 442290 336a17 805058
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 00008000 0000ff00  00820000 00808000 0076ff00  00ff0000 00ff8000 00ffff00
-	00000095 00008080 0000ff00  00820095 00808080 0076ff00  00ff0095 00ff8080 00ffff00
-	000000ff 000080ff 0000ffff  008200ff 008080ff 0076ffff  00ff00ff 00ff80ff 00ffffff
-	7f000000 7f008000 7f00ff00  7f820000 7f808000 7f76ff00  7fff0000 7fff8000 7fffff00
-	7f000095 7f008080 7f00ff00  7f820095 7f808080 7f76ff00  7fff0095 7fff8080 7fffff00
-	7f0000ff 7f0080ff 7f00ffff  7f8200ff 7f8080ff 7f76ffff  7fff00ff 7fff80ff 7fffffff
-	ff000000 ff008000 ff00ff00  ff820000 ff808000 ff76ff00  ffff0000 ffff8000 ffffff00
-	ff000095 ff008080 ff00ff00  ff820095 ff808080 ff76ff00  ffff0095 ffff8080 ffffff00
-	ff0000ff ff0080ff ff00ffff  ff8200ff ff8080ff ff76ffff  ffff00ff ffff80ff ffffffff
+	00000000 00008000 0000ff00  00830000 00808000 0076ff00  00ff0000 00ff8000 00ffff00
+	00000095 00008080 0000ff00  00830095 00808080 0076ff00  00ff0095 00ff8080 00ffff00
+	000000ff 000080ff 0000ffff  008300ff 008080ff 0076ffff  00ff00ff 00ff80ff 00ffffff
+	7f000000 7f008000 7f00ff00  7f830000 7f808000 7f76ff00  7fff0000 7fff8000 7fffff00
+	7f000095 7f008080 7f00ff00  7f830095 7f808080 7f76ff00  7fff0095 7fff8080 7fffff00
+	7f0000ff 7f0080ff 7f00ffff  7f8300ff 7f8080ff 7f76ffff  7fff00ff 7fff80ff 7fffffff
+	ff000000 ff008000 ff00ff00  ff830000 ff808000 ff76ff00  ffff0000 ffff8000 ffffff00
+	ff000095 ff008080 ff00ff00  ff830095 ff808080 ff76ff00  ffff0095 ffff8080 ffffff00
+	ff0000ff ff0080ff ff00ffff  ff8300ff ff8080ff ff76ffff  ffff00ff ffff80ff ffffffff
diff --git a/profiles/misc/AdobeRGB.icc.txt b/profiles/misc/AdobeRGB.icc.txt
index f78ec8e..fbc4bcb 100644
--- a/profiles/misc/AdobeRGB.icc.txt
+++ b/profiles/misc/AdobeRGB.icc.txt
@@ -20,7 +20,7 @@
 gTRC : 2.199219, 1, 0, 0, 0, 0, 0
 bTRC : 2.199219, 1, 0, 0, 0, 0, 0
 Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, -0, 0
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
  XYZ : | 0.609741211 0.205276489 0.149185181 |
        | 0.311111450 0.625671387 0.063217163 |
        | 0.019470215 0.060867310 0.744567871 |
@@ -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 008300ff  00808000 00808080 008080ff  0076ff00 0076ff00 0076ffff
+	00830000 00830095 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 7f8300ff  7f808000 7f808080 7f8080ff  7f76ff00 7f76ff00 7f76ffff
+	7f830000 7f830095 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 ff8300ff  ff808000 ff808080 ff8080ff  ff76ff00 ff76ff00 ff76ffff
+	ff830000 ff830095 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 c4163ce..cf3509f 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, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 adc0572..77b7591 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, 0, 0 (Max error: 0.0127077)
+  ~= : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (Max error: 0.00890554)
 gTRC : 16-bit table with 1024 entries
-  ~= : 1.993112, 1.001831, -0, 0, 0, 0, 0 (Max error: 0.0127077)
+  ~= : 1.993112, 1.001831, -0, 0, 0, -1.525879e-05, 0 (Max error: 0.00890554)
 bTRC : 16-bit table with 1024 entries
-  ~= : 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
+  ~= : 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
  XYZ : | 0.388397217 0.402297974 0.201400757 |
        | 0.193893433 0.741104126 0.065093994 |
        | 0.010299683 0.061203003 1.014602661 |
diff --git a/profiles/misc/BenQ_RL2455.icc.txt b/profiles/misc/BenQ_RL2455.icc.txt
index 67a0904..f912e86 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, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -3.20375e-07)
+  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (Max error: 0.0248607) (D-gap: -8.59052e-06)
 gTRC : 16-bit table with 5 entries
-  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -9.85422e-05, 0 (Max error: 0.0248359) (D-gap: -3.20375e-07)
+  ~= : 2.201602, 0.9994202, 0.000629075, 0.189456, 0.25, -0.0001068115, 0 (Max error: 0.0248607) (D-gap: -8.59052e-06)
 bTRC : 16-bit table with 5 entries
-  ~= : 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)
+  ~= : 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)
  XYZ : | 0.465194702 0.355957031 0.143020630 |
        | 0.231887817 0.681533813 0.086563110 |
        | 0.009918213 0.092864990 0.722106934 |
  A2B : "A", CLUT, "B"
  "A" : 3 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
   A1 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
   A2 : 16-bit table with 256 entries
-  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 5.444739e-06, 0 (Max error: 0.00392157) (D-gap: -8.38918e-09)
+  ~= : 2.199465, 1.000069, -0.0001397247, 0.005188067, 0.01176471, 0, 0 (Max error: 0.00392157) (D-gap: -5.45313e-06)
 CLUT : 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
@@ -73,10 +73,10 @@
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00000060 000000c2  00015b00 00005a5e 000058c1  0002b800 0000b859 0000b7bf
 	005d1100 005c0d5e 005c00c1  005d5d00 005c5d5c 005c5bc1  005db900 005cb957 005cb8be
-	00bc2c00 00bc2b56 00bc26be  00bc6400 00bc6455 00bb63be  00bcbc00 00bcbc4f 00bbbbbc
+	00bc2c00 00bc2b56 00bc26be  00bc6400 00bc6455 00bb63be  00bcbc00 00bcbc4f 00bcbbbc
 	7f000000 7f000060 7f0000c2  7f015b00 7f005a5e 7f0058c1  7f02b800 7f00b859 7f00b7bf
 	7f5d1100 7f5c0d5e 7f5c00c1  7f5d5d00 7f5c5d5c 7f5c5bc1  7f5db900 7f5cb957 7f5cb8be
-	7fbc2c00 7fbc2b56 7fbc26be  7fbc6400 7fbc6455 7fbb63be  7fbcbc00 7fbcbc4f 7fbbbbbc
+	7fbc2c00 7fbc2b56 7fbc26be  7fbc6400 7fbc6455 7fbb63be  7fbcbc00 7fbcbc4f 7fbcbbbc
 	ff000000 ff000060 ff0000c2  ff015b00 ff005a5e ff0058c1  ff02b800 ff00b859 ff00b7bf
 	ff5d1100 ff5c0d5e ff5c00c1  ff5d5d00 ff5c5d5c ff5c5bc1  ff5db900 ff5cb957 ff5cb8be
-	ffbc2c00 ffbc2b56 ffbc26be  ffbc6400 ffbc6455 ffbb63be  ffbcbc00 ffbcbc4f ffbbbbbc
+	ffbc2c00 ffbc2b56 ffbc26be  ffbc6400 ffbc6455 ffbb63be  ffbcbc00 ffbcbc4f ffbcbbbc
diff --git a/profiles/misc/Coated_FOGRA27_CMYK.icc.txt b/profiles/misc/Coated_FOGRA27_CMYK.icc.txt
index 46a6469..1cb545b 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.05260923, 0 (Max error: 0.00186646) (D-gap: -1.39102e-05)
+  ~= : 1.160069, 0.9661255, 0.08076088, 0.8236057, 0.02352941, -0.05234528, 0 (Max error: 0.00187165) (D-gap: 0.000250041)
   A1 : 16-bit table with 256 entries
-  ~= : 1.086079, 1.063683, -0.1907801, 0.8082388, 0.1803922, 0.145188, 0 (Max error: 0.0069555) (D-gap: -1.3411e-07)
+  ~= : 1.086079, 1.063683, -0.1907801, 0.8082388, 0.1803922, 0.1453209, 0 (Max error: 0.00695801) (D-gap: 0.000132725)
   A2 : 16-bit table with 256 entries
-  ~= : 1.187467, 0.9799652, 0.03853871, 0.7821012, 0.03529412, -0.01718035, 0 (Max error: 0.00421613) (D-gap: -4.14066e-06)
+  ~= : 1.187467, 0.9799652, 0.03853871, 0.7821012, 0.03529412, -0.0170517, 0 (Max error: 0.00417328) (D-gap: 0.000124509)
   A3 : 16-bit table with 256 entries
-  ~= : 4.09466, 0.6916656, 0.7610579, 0.7655641, 0.01568628, -0.3344684, 0 (Max error: 0.549026) (D-gap: -7.22157e-05)
+  ~= : 4.09466, 0.6916656, 0.7610579, 0.7655641, 0.01568628, -0.3340759, 0 (Max error: 0.548958) (D-gap: 0.000320251)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -46,8 +46,8 @@
 	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 ff147759 ff00919c
-	ff361b0a ff33135a ff32048b  ff493f00 ff4a4e58 ff4c5f93  ff5b5f00 ff5f7b54 ff63969b
+	ff361b0a ff34135a ff32048b  ff493f00 ff4a4e58 ff4c5f93  ff5b5f00 ff5f7b54 ff63969b
 	ff55160a ff50055c ff4d008c  ff714000 ff745056 ff796293  ff8c6200 ff95804c ff9f9d9a
 	ff292e1c ff252391 ff1b00e1  ff326300 ff237c94 ff0094f1  ff379000 ff11be95 ff00ecff
-	ff562d19 ff531f91 ff4f00e1  ff746700 ff778092 ff7999f0  ff8f9600 ff96c68d ff9af5ff
+	ff562d19 ff531f91 ff4f00e1  ff746700 ff778092 ff7999f0  ff8f9600 ff96c68d ff9bf5ff
 	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 584faa9..4a0e2fe 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.006561379, 0 (Max error: 0.0166701) (D-gap: 0)
+  ~= : 1.05448, 1.018715, -0.007989922, 0.8365758, 0.007843138, 0.0066185, 0 (Max error: 0.890015) (D-gap: 5.71203e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117216, 1.017609, 0.0126555, 0.7665369, 0.007843138, -0.007083124, 0 (Max error: 0.0235068) (D-gap: -1.23028e-06)
+  ~= : 1.117216, 1.017609, 0.0126555, 0.7665369, 0.007843138, -0.007049561, 0 (Max error: 0.0234528) (D-gap: 3.23332e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 1.179158, 0.9974213, 0.03461293, 0.7081712, 0.007843138, -0.01853815, 0 (Max error: 0.0164376) (D-gap: -2.3935e-07)
+  ~= : 1.179158, 0.9974213, 0.03461293, 0.7081712, 0.007843138, -0.01841736, 0 (Max error: 0.0163574) (D-gap: 0.000120555)
   A3 : 16-bit table with 256 entries
-  ~= : 2.925117, 0.6722412, 0.6647326, 0.7159533, 0.007843137, -0.304297, 0 (Max error: 0.359909) (D-gap: 1.3453e-06)
+  ~= : 2.925117, 0.6722412, 0.6647326, 0.7159533, 0.007843137, -0.3037949, 0 (Max error: 0.360039) (D-gap: 0.000503455)
 CLUT : 11 x 11 x 11 x 11 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -46,10 +46,10 @@
 	020100 202004 111216 363d12 191b14 130f16 0c0c0f
 	020201 0c0e15 0e0805 1a1814 070502 16130f 211f27
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	ff010000 ff01000f ff000020  ff010500 ff000c08 ff00101d  ff001200 ff001900 ff001e1b
+	ff010000 ff01000f ff000020  ff010500 ff000c08 ff00101e  ff001200 ff001900 ff001e1b
 	ff010000 ff020013 ff010022  ff070100 ff04090b ff000d20  ff0f0e00 ff0c1700 ff091d1b
 	ff0b0100 ff060014 ff020025  ff170100 ff14030c ff110921  ff200b00 ff1e1600 ff1c1d1c
-	ff1a201e ff11195a ff041288  ff234000 ff174e5c ff005b91  ff285f00 ff157759 ff00909b
+	ff1a201e ff11195a ff041288  ff234100 ff174e5c ff005b91  ff285f00 ff157759 ff00909b
 	ff381b1e ff33155c ff2f0a8b  ff4a4000 ff4c515b ff4c5f92  ff5b6000 ff607b55 ff61959a
 	ff52141f ff500c5d ff4d008c  ff704000 ff765359 ff796393  ff8b6200 ff96804e ff9c9c9b
 	ff313231 ff262992 ff150ce2  ff3b6600 ff2a7b94 ff0092f1  ff419600 ff21c093 ff00edff
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index ea11a44..81ff116 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.73071, 12.38586, 1.200778, 0.01960784, -2.357529, 0 (Max error: 0.102398) (D-gap: -0.000183938)
+  ~= : 0.3393432, 25.73071, 12.38586, 1.200778, 0.01960784, -2.357025, 0 (Max error: 0.102386) (D-gap: 0.000320079)
   A1 : 16-bit table with 256 entries
-  ~= : 0.3643354, 14.16479, 6.025642, 1.205447, 0.01960784, -1.932159, 0 (Max error: 0.0766691) (D-gap: -9.10796e-05)
+  ~= : 0.3643354, 14.16479, 6.025642, 1.205447, 0.01960784, -1.931793, 0 (Max error: 0.0767495) (D-gap: 0.000274297)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7474884, 0.9664421, -0.1072783, 1.241552, 0.1490196, 0.1003987, 0 (Max error: 0.0142888) (D-gap: -4.05312e-06)
+  ~= : 0.7474884, 0.9664421, -0.1072783, 1.241552, 0.1490196, 0.1005783, 0 (Max error: 0.0143543) (D-gap: 0.000175521)
   A3 : 16-bit table with 256 entries
-  ~= : 0.8032417, 0.9342613, -0.01337674, 1.182879, 0.01568628, 0.01381338, 0 (Max error: 0.0662131) (D-gap: -4.47035e-08)
+  ~= : 0.8032417, 0.9342613, -0.01337674, 1.182879, 0.01568628, 0.01389694, 0 (Max error: 0.0662346) (D-gap: 8.3521e-05)
 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.000120819)
+  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.000143707)
   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:
@@ -51,7 +51,7 @@
 	ff050003 ff000010 ff00001f  ff080400 ff06080a ff030c1d  ff0d0f00 ff0c1500 ff0b1b1a
 	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
+	ff341b1d ff321856 ff301186  ff473d00 ff4c5059 ff4d5f90  ff595d00 ff607a55 ff63959a
 	ff4c151c ff4c1357 ff4b0887  ff6b3e00 ff735257 ff796390  ff876000 ff947f4e ff9c9c9a
 	ff30302f ff282a8d ff1300e2  ff3b6300 ff2d7a93 ff008ff4  ff429400 ff1ec093 ff00ecff
 	ff552d2d ff54288f ff4f00e4  ff756500 ff7a7f91 ff7b98f2  ff929800 ff9ac78c ff9af4ff
diff --git a/profiles/misc/Color_Spin_Gamma_18.icc.txt b/profiles/misc/Color_Spin_Gamma_18.icc.txt
index 5b0866f..2530d1d 100644
--- a/profiles/misc/Color_Spin_Gamma_18.icc.txt
+++ b/profiles/misc/Color_Spin_Gamma_18.icc.txt
@@ -19,7 +19,7 @@
 gTRC : 1.800781, 1, 0, 0, 0, 0, 0
 bTRC : 1.800781, 1, 0, 0, 0, 0, 0
 Best : 1.800781, 1, 0, 0, 0, 0, 0
-Inv  : 0.5553145, 1, -0, 0, 0, -0, 0
+Inv  : 0.5553145, 1, -0, 0, 0, 0, 0
  XYZ : | 0.385116577 0.143035889 0.436050415 |
        | 0.716903687 0.060607910 0.222488403 |
        | 0.097061157 0.713912964 0.013916016 |
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index 62ba998..54d5827 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.004211491, 0 (Max error: 0.0831201) (D-gap: 0)
+  ~= : 1.929522, 1.131104, -0.133071, 0.03579767, 0.1176471, 0.004390717, 0 (Max error: 1.34651e+35) (D-gap: 0.000179225)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.287451, 0.9762917, 0.03631328, 0.03112842, 0.1921569, -0.02663262, 0 (Max error: 0.0558824) (D-gap: -1.30427e-05)
+  ~= : 2.287451, 0.9762917, 0.03631328, 0.03112842, 0.1921569, -0.02641296, 0 (Max error: 0.0558824) (D-gap: 0.000206613)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  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.006287, 0.1542477, 1.000015, 0.125, -0.1587768, 0 (Max error: 0.0184422) (D-gap: -8.3521e-05) (~Identity)
+  ~= : 0.9896749, 1.006287, 0.1542477, 1.000015, 0.125, -0.1584778, 0 (Max error: 0.0184479) (D-gap: 0.00021553) (~Identity)
   A1 : 16-bit table with 2049 entries
-  ~= : 0.9858807, 1.008598, 0.1456893, 1.000015, 0.125, -0.1518457, 0 (Max error: 0.016737) (D-gap: -7.7948e-05)
+  ~= : 0.9858807, 1.008598, 0.1456893, 1.000015, 0.125, -0.1515274, 0 (Max error: 0.0167599) (D-gap: 0.000240326)
   A2 : 16-bit table with 2049 entries
-  ~= : 0.9882579, 1.008926, 0.3841263, 1.000015, 0.03125, -0.388747, 0 (Max error: 0.0201283) (D-gap: -7.56383e-05) (~Identity)
+  ~= : 0.9882579, 1.008926, 0.3841263, 1.000015, 0.03125, -0.3887711, 0 (Max error: 0.0201378) (D-gap: -9.9659e-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 005b5abc  0053be00 0054bd59 0052bdbb
-	00c00007 00c0005c 00bf00bd  00bf5b02 00bf5a5c 00be58bd  00bcbc00 00bcbc5a 00bbbcbc
+	00670400 005e005b 005d00bc  005b5d00 005c5c5c 005b5abc  0053be00 0054bd59 0052bdbb
+	00c00007 00c0005c 00bf00bd  00bf5b02 00bf5a5c 00be58bd  00bcbc00 00bcbc5a 00bcbcbc
 	7f191919 7f00005b 7f0000bc  7f005c00 7f005c5c 7f005abd  7f00be00 7f00be59 7f00bdbb
-	7f670400 7f5e005b 7f5d00bc  7f5b5d00 7f5b5c5c 7f5b5abc  7f53be00 7f54bd59 7f52bdbb
-	7fc00007 7fc0005c 7fbf00bd  7fbf5b02 7fbf5a5c 7fbe58bd  7fbcbc00 7fbcbc5a 7fbbbcbc
+	7f670400 7f5e005b 7f5d00bc  7f5b5d00 7f5c5c5c 7f5b5abc  7f53be00 7f54bd59 7f52bdbb
+	7fc00007 7fc0005c 7fbf00bd  7fbf5b02 7fbf5a5c 7fbe58bd  7fbcbc00 7fbcbc5a 7fbcbcbc
 	ff191919 ff00005b ff0000bc  ff005c00 ff005c5c ff005abd  ff00be00 ff00be59 ff00bdbb
-	ff670400 ff5e005b ff5d00bc  ff5b5d00 ff5b5c5c ff5b5abc  ff53be00 ff54bd59 ff52bdbb
-	ffc00007 ffc0005c ffbf00bd  ffbf5b02 ffbf5a5c ffbe58bd  ffbcbc00 ffbcbc5a ffbbbcbc
+	ff670400 ff5e005b ff5d00bc  ff5b5d00 ff5c5c5c ff5b5abc  ff53be00 ff54bd59 ff52bdbb
+	ffc00007 ffc0005c ffbf00bd  ffbf5b02 ffbf5a5c ffbe58bd  ffbcbc00 ffbcbc5a ffbcbcbc
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index c73ef40..5fe126e 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, -7.343342e-06, 0 (Max error: 0.000202144) (D-gap: -4.22588e-08)
+  ~= : 1.737027, 0.9999313, 3.289578e-05, 0.06290532, 0.02352941, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.95769e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 1.737027, 0.9999313, 3.289578e-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, -1.525879e-05, 0 (Max error: 0.000202144) (D-gap: -7.95769e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  XYZ : | 0.964202881 0.000000000 0.000000000 |
        | 0.000000000 1.000000000 0.000000000 |
        | 0.000000000 0.000000000 0.824905396 |
@@ -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 002700f4 004a00ff  0000c700 000093ad 000400ff  0000ff00 0000ff00 0000fcff
+	00000000 002700f4 004b00ff  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 7f2700f4 7f4a00ff  7f00c700 7f0093ad 7f0400ff  7f00ff00 7f00ff00 7f00fcff
+	7f000000 7f2700f4 7f4b00ff  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 ff2700f4 ff4a00ff  ff00c700 ff0093ad ff0400ff  ff00ff00 ff00ff00 ff00fcff
+	ff000000 ff2700f4 ff4b00ff  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 73e5857..de8ca37 100644
--- a/profiles/misc/Generic_RGB_Gamma_18.icc.txt
+++ b/profiles/misc/Generic_RGB_Gamma_18.icc.txt
@@ -21,7 +21,7 @@
 gTRC : 1.800781, 1, 0, 0, 0, 0, 0
 bTRC : 1.800781, 1, 0, 0, 0, 0, 0
 Best : 1.800781, 1, 0, 0, 0, 0, 0
-Inv  : 0.5553145, 1, -0, 0, 0, -0, 0
+Inv  : 0.5553145, 1, -0, 0, 0, 0, 0
  XYZ : | 0.454299927 0.353347778 0.156646729 |
        | 0.241912842 0.673629761 0.084457397 |
        | 0.014892578 0.090637207 0.719573975 |
@@ -40,11 +40,11 @@
 	64a71d 55383b 4a574a 6c4c30 58914e 5d4024 5f7291
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
 	00000000 00001193 000026ff  00008e00 00008f91 000093ff  0000f900 0000fa8d 0000fbff
-	00921801 00922093 00912fff  00929000 00919191 009195ff  0091fa00 0091fb8d 0091fcff
+	00921801 00922193 00912fff  00929000 00919191 009195ff  0091fa00 0091fb8d 0091fcff
 	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
+	7f921801 7f922193 7f912fff  7f929000 7f919191 7f9195ff  7f91fa00 7f91fb8d 7f91fcff
 	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
+	ff921801 ff922193 ff912fff  ff929000 ff919191 ff9195ff  ff91fa00 ff91fb8d ff91fcff
 	ffff3304 ffff3793 ffff40ff  ffff9600 ffff9792 ffff9aff  fffffd00 fffffd8d ffffffff
diff --git a/profiles/misc/Gray_Gamma_22.icc.txt b/profiles/misc/Gray_Gamma_22.icc.txt
index ab2dcca..d699d7c 100644
--- a/profiles/misc/Gray_Gamma_22.icc.txt
+++ b/profiles/misc/Gray_Gamma_22.icc.txt
@@ -15,7 +15,7 @@
 gTRC : 2.199219, 1, 0, 0, 0, 0, 0
 bTRC : 2.199219, 1, 0, 0, 0, 0, 0
 Best : 2.199219, 1, 0, 0, 0, 0, 0
-Inv  : 0.4547069, 1, -0, 0, 0, -0, 0
+Inv  : 0.4547069, 1, -0, 0, 0, 0, 0
  XYZ : | 0.964202881 0.000000000 0.000000000 |
        | 0.000000000 1.000000000 0.000000000 |
        | 0.000000000 0.000000000 0.824905396 |
@@ -33,12 +33,12 @@
 	0d580e 201993 0b0339 c00203 1acb00 00000d 1765b3
 	15e504 790d30 274f3a ab1922 03c035 931217 1e6f8e
 81 edge-case pixels transformed to sRGB 8888 (unpremul):
-	00000000 002100d3 004a00ff  0000ac00 00007e96 002700ff  0000ff00 0000ff00 0000fcff
+	00000000 002100d3 004b00ff  0000ac00 00007e96 002700ff  0000ff00 0000ff00 0000fcff
 	00891200 008d00c6 009900ff  007cad00 00808080 008e00ff  0028ff00 0036ff00 0055fdff
 	00ff2e00 00ff0088 00ff00ff  00ffb100 00ff8600 00ff00ff  00f7ff00 00f9ff00 00ffffff
-	7f000000 7f2100d3 7f4a00ff  7f00ac00 7f007e96 7f2700ff  7f00ff00 7f00ff00 7f00fcff
+	7f000000 7f2100d3 7f4b00ff  7f00ac00 7f007e96 7f2700ff  7f00ff00 7f00ff00 7f00fcff
 	7f891200 7f8d00c6 7f9900ff  7f7cad00 7f808080 7f8e00ff  7f28ff00 7f36ff00 7f55fdff
 	7fff2e00 7fff0088 7fff00ff  7fffb100 7fff8600 7fff00ff  7ff7ff00 7ff9ff00 7fffffff
-	ff000000 ff2100d3 ff4a00ff  ff00ac00 ff007e96 ff2700ff  ff00ff00 ff00ff00 ff00fcff
+	ff000000 ff2100d3 ff4b00ff  ff00ac00 ff007e96 ff2700ff  ff00ff00 ff00ff00 ff00fcff
 	ff891200 ff8d00c6 ff9900ff  ff7cad00 ff808080 ff8e00ff  ff28ff00 ff36ff00 ff55fdff
 	ffff2e00 ffff0088 ffff00ff  ffffb100 ffff8600 ffff00ff  fff7ff00 fff9ff00 ffffffff
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index 5af20ef..2b955db 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, -1.405069e-06, 0 (Max error: 0.000251848) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  XYZ : | 0.358963013 0.446350098 0.158889771 |
        | 0.195922852 0.742843628 0.061233521 |
        | 0.009674072 0.043518066 0.771713257 |
diff --git a/profiles/misc/Japan_Color_2001_Coated.icc.txt b/profiles/misc/Japan_Color_2001_Coated.icc.txt
index 1fd1e91..a8f9508 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.02447547, 0 (Max error: 0.0512919) (D-gap: -1.86265e-09)
+  ~= : 1.010957, 1.063629, -0.03336876, 0.7801556, 0.03137255, 0.02462769, 0 (Max error: 0.0513268) (D-gap: 0.000152213)
   A1 : 16-bit table with 256 entries
-  ~= : 1.117948, 1.022087, -0.0280573, 0.6270149, 0.02745098, 0.01721218, 0 (Max error: 0.00928837) (D-gap: 0)
+  ~= : 1.127547, 1.01329, -0.000483401, 0.3501945, 0.003921568, -0.000289917, 0 (Max error: 0.0123787) (D-gap: 3.26649e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 1.158917, 0.990242, 0.04165715, 0.6193256, 0.02352941, -0.02749484, 0 (Max error: 0.0083915) (D-gap: -4.21423e-06)
+  ~= : 1.158917, 0.990242, 0.04165715, 0.6193256, 0.02352941, -0.02733612, 0 (Max error: 0.00832367) (D-gap: 0.000154509)
   A3 : 16-bit table with 256 entries
-  ~= : 1.834799, 0.7538795, 0.3804454, 0.3229572, 0.003921569, -0.1709625, 0 (Max error: 0.0590553) (D-gap: -1.07035e-05)
+  ~= : 1.834799, 0.7538795, 0.3804454, 0.3229572, 0.003921569, -0.1707611, 0 (Max error: 0.0589523) (D-gap: 0.000190716)
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (~Identity)
@@ -48,6 +48,6 @@
 	ff19160c ff0e0a5c ff000090  ff224100 ff0f4e5a ff005c96  ff296300 ff077b54 ff00959f
 	ff391208 ff34035b ff2d008f  ff4d4100 ff4a4f58 ff475e96  ff606500 ff5f7e50 ff5e999e
 	ff590306 ff54005c ff500090  ff773f00 ff784f57 ff7a6196  ff966700 ff9a8249 ffa09f9d
-	ff35311e ff2b2793 ff1406e4  ff3f6900 ff2a7e92 ff0097f1  ff459900 ff22c38c ff00f0ff
+	ff35311e ff2b2793 ff1406e4  ff3f6900 ff2a7e93 ff0097f1  ff459900 ff22c38c ff00f0ff
 	ff5d2d1d ff572092 ff5000e4  ff796900 ff788090 ff769af0  ff969d00 ff97c886 ff99f7ff
 	ff88211a ff840c91 ff7f00e2  ffb76800 ffbc818c ffc29def  ffe9a000 fff4cd7a fffffefc
diff --git a/profiles/misc/Kodak_sRGB.icc.txt b/profiles/misc/Kodak_sRGB.icc.txt
index d7e8cbd..6fbf6fe 100644
--- a/profiles/misc/Kodak_sRGB.icc.txt
+++ b/profiles/misc/Kodak_sRGB.icc.txt
@@ -21,32 +21,32 @@
  'bTRC' : 'curv' :    524 : 149844
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.00614446) (D-gap: -3.46452e-07)
+  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (Max error: 0.00561243) (D-gap: 0.000211882)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003171407, 0 (Max error: 0.00614446) (D-gap: -3.46452e-07)
+  ~= : 2.416816, 0.9406624, 0.05426622, 1.070039, 0.003921569, 0.003383636, 0 (Max error: 0.00561243) (D-gap: 0.000211882)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  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.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5043284, 0 (Max error: 0.00322378) (D-gap: -0.00010246)
+  ~= : 0.7264283, 1.40155, 0.3523805, 0.7458658, 0.0627451, -0.5041351, 0 (Max error: 0.00306643) (D-gap: 9.08375e-05)
 CLUT : 8 x 8 x 8 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
   B1 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
   B2 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.00484848, 0 (Max error: 0.00196159) (D-gap: -3.0458e-05)
 252 random bytes transformed to linear XYZD50 bytes:
 	355632 a5d31d 4c6517 190f30 1e124a 5d4709 4e8727
 	693a2f 1c1712 6c4626 a0a014 4d5d0c 2e442c 42288e
diff --git a/profiles/misc/Lexmark_X110.icc.txt b/profiles/misc/Lexmark_X110.icc.txt
index 34c931c..3343a78 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
-	00ffa03e 00ffa4d1 00ffa4fd  00fff300 00ffddb7 00ffedfe  00fff240 00fff5aa 00ffffff
+	00ffa03e 00ffa4d1 00ffa4fd  00fff300 00ffddb7 00ffeefe  00fff240 00fff5aa 00ffffff
 	7f000000 7f0206a2 7f243cff  7f35d000 7f0bcabc 7f02cffe  7f63ff1e 7f5cf3cd 7f3dffff
 	7fff674a 7fff68df 7ff55ffd  7ff6fc00 7fb5b5b5 7fd4c7fd  7fd1d464 7fe1ffe5 7fd9fffe
-	7fffa03e 7fffa4d1 7fffa4fd  7ffff300 7fffddb7 7fffedfe  7ffff240 7ffff5aa 7fffffff
+	7fffa03e 7fffa4d1 7fffa4fd  7ffff300 7fffddb7 7fffeefe  7ffff240 7ffff5aa 7fffffff
 	ff000000 ff0206a2 ff243cff  ff35d000 ff0bcabc ff02cffe  ff63ff1e ff5cf3cd ff3dffff
 	ffff674a ffff68df fff55ffd  fff6fc00 ffb5b5b5 ffd4c7fd  ffd1d464 ffe1ffe5 ffd9fffe
-	ffffa03e ffffa4d1 ffffa4fd  fffff300 ffffddb7 ffffedfe  fffff240 fffff5aa ffffffff
+	ffffa03e ffffa4d1 ffffa4fd  fffff300 ffffddb7 ffffeefe  fffff240 fffff5aa ffffffff
diff --git a/profiles/misc/MartiMaria_browsertest_A2B.icc.txt b/profiles/misc/MartiMaria_browsertest_A2B.icc.txt
index f8f185a..420b9e9 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 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
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
diff --git a/profiles/misc/MartiMaria_browsertest_HARD.icc.txt b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
index ca60ce4..c23c806 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.000113308)
+  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000128567)
 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 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
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc  00000000 00bcbcbc 00bcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc  7f000000 7fbcbcbc 7fbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
+	ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc  ff000000 ffbcbcbc ffbcbcbc
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index 5ac7d46..8f4cafc 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.2299772, 0 (Max error: 0.0201951) (D-gap: -3.33935e-05)
+  ~= : 0.3802269, 1.743515, 0.01529081, 3.844358, 0.007843138, -0.2299347, 0 (Max error: 0.0201225) (D-gap: 9.07481e-06)
 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.03201343, 0 (Max error: 0.13987) (D-gap: 0)
+  ~= : 0.7390234, 0.8481178, -0.009977858, 2.721141, 0.01176471, 0.03213882, 0 (Max error: 0.139809) (D-gap: 0.000125397)
  XYZ : | 0.647903442 0.357360840 0.156417847 |
        | 0.382919312 1.109725952 0.000000000 |
        | 0.083267212 0.679275513 0.523422241 |
@@ -51,12 +51,12 @@
 	214f17 4128a4 1c0d53 9e5406 4bcd2f 04021c 3e5ba2
 	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
+	00010000 000000b5 00002eff  00009c00 0000928d 001a74ff  00c1ff00 0031ff00 0000ffcd
 	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
+	7f010000 7f0000b5 7f002eff  7f009c00 7f00928d 7f1a74ff  7fc1ff00 7f31ff00 7f00ffcd
 	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
+	ff010000 ff0000b5 ff002eff  ff009c00 ff00928d ff1a74ff  ffc1ff00 ff31ff00 ff00ffcd
 	ffae0000 ffa700b1 ff7100ff  ff879300 ff8c8d8b ff8787ff  ffdfff00 ff95ff00 ff00fff3
 	ffc40000 ffe40044 ffd300b0  fff68e00 ffff7296 ffff00ff  ffffff00 ffffff00 fffffefc
diff --git a/profiles/misc/SM245B.icc.txt b/profiles/misc/SM245B.icc.txt
index 204a062..e98cabe 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, -1.221265e-05, 0 (Max error: 0.00392157) (D-gap: -6.50107e-09)
+  ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.0682e-05)
 gTRC : 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)
+  ~= : 2.200449, 0.9998741, 0.0001117428, 0.00389105, 0.01176471, -2.288818e-05, 0 (Max error: 0.00392157) (D-gap: -1.0682e-05)
 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.000282, 1.221609e-05, 257, 4.577707e-05, -0.0001117568, -0 (D-gap: -1.78814e-07)
+  ~= : 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)
  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 00ffffeb
+	00ff0000 00ff0079 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 7fffffeb
+	7fff0000 7fff0079 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 ffffffeb
+	ffff0000 ffff0079 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 0fcc9e0..38a809f 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -44,7 +44,7 @@
 	ff010000 ff010000 ff010000  ff010000 ff010000 ff010000  ff010000 ff010000 ff010000
 	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
+	ff45061e ff450051 ff450082  ff663900 ff694854 ff6d5b8d  ff886000 ff8e774d ff959493
 	ff332734 ff2e2389 ff2400dd  ff396700 ff2c7f88 ff009bed  ff3d9e00 ff25c57a ff00f3f6
 	ff581f39 ff56178d ff5200df  ff786800 ff788090 ff779df1  ff9ca300 ff9dc985 ff9df9fc
 	ff7b113c ff7b0090 ff7b00e1  ffb26800 ffb68094 ffbc9ff3  ffeba800 fff3ce8a fffffefc
diff --git a/profiles/misc/ThinkpadX1YogaV2.icc.txt b/profiles/misc/ThinkpadX1YogaV2.icc.txt
index cf9f537..0f07644 100644
--- a/profiles/misc/ThinkpadX1YogaV2.icc.txt
+++ b/profiles/misc/ThinkpadX1YogaV2.icc.txt
@@ -24,7 +24,7 @@
 gTRC : 2.199997, 1, 0, 0, 0, 0, 0
 bTRC : 2.199997, 1, 0, 0, 0, 0, 0
 Best : 2.199997, 1, 0, 0, 0, 0, 0
-Inv  : 0.4545461, 1, -0, 0, 0, -0, 0
+Inv  : 0.4545461, 1, -0, 0, 0, 0, 0
  XYZ : | 0.566986084 0.260650635 0.136566162 |
        | 0.258071899 0.684646606 0.057281494 |
        | 0.000442505 0.044403076 0.780044556 |
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index 42e1fa6..bcd76ba 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.273102, 0.2824915, 2.132296, 0.003921569, -0.3863242, 0 (Max error: 0.00500357) (D-gap: -2.32542e-05)
+  ~= : 0.7457523, 1.273102, 0.2824915, 2.132296, 0.003921569, -0.3862457, 0 (Max error: 0.00514561) (D-gap: 5.51855e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.001741, 0.9817963, -0.01540073, 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.02549744, 0 (Max error: 0.00973922) (D-gap: 4.53889e-05)
   A2 : 16-bit table with 256 entries
-  ~= : 1.043713, 0.9970474, -0.01563996, 1.68677, 0.01568628, 0.02645914, 0 (Max error: 0.0163635) (D-gap: 0)
+  ~= : 1.041717, 0.9965515, -0.003908046, 2.011673, 0.003921569, 0.007892609, 0 (Max error: 0.022772) (D-gap: 3.69456e-06)
   A3 : 16-bit table with 256 entries
 CLUT : 9 x 9 x 9 x 9 (16 bpp)
  "B" : 3 outputs
@@ -44,9 +44,9 @@
 	ff010000 ff010000 ff020015  ff010000 ff010000 ff01001b  ff010500 ff001400 ff001a17
 	ff010000 ff010000 ff020015  ff010000 ff010000 ff01001e  ff090500 ff061500 ff001c1d
 	ff010000 ff010000 ff020014  ff110100 ff0f0100 ff090023  ff240600 ff231500 ff211f22
-	ff181416 ff110f55 ff05058a  ff233f00 ff194952 ff02558e  ff2e6500 ff21754a ff008c94
+	ff181416 ff110f55 ff05058a  ff233f00 ff194952 ff02558e  ff2f6500 ff21754a ff008c94
 	ff381113 ff350955 ff30008a  ff4a4000 ff484a51 ff45568e  ff5e6600 ff5d7745 ff5b9094
-	ff580912 ff540055 ff52008b  ff714000 ff724b4e ff73588e  ff916800 ff947b3a ff989591
+	ff580912 ff550055 ff52008b  ff714000 ff724b4e ff73588e  ff916800 ff947b3a ff989591
 	ff3a3635 ff342f94 ff251fec  ff466f00 ff3b7e92 ff1f93f6  ff51a500 ff40c68a ff00f1ff
 	ff653432 ff612d93 ff5b17ec  ff7e7000 ff7d808d ff7996f5  ff9da800 ff9cc97f ff99f6ff
 	ff92312c ff8f2890 ff8c02ea  ffbc7100 ffbd8185 ffc199f2  ffefad00 fff6cf69 fffffefc
diff --git a/profiles/misc/XPS13_9360.icc.txt b/profiles/misc/XPS13_9360.icc.txt
index 48e27fb..d049767 100644
--- a/profiles/misc/XPS13_9360.icc.txt
+++ b/profiles/misc/XPS13_9360.icc.txt
@@ -24,7 +24,7 @@
 gTRC : 2.199997, 1, 0, 0, 0, 0, 0
 bTRC : 2.199997, 1, 0, 0, 0, 0, 0
 Best : 2.199997, 1, 0, 0, 0, 0, 0
-Inv  : 0.4545461, 1, -0, 0, 0, -0, 0
+Inv  : 0.4545461, 1, -0, 0, 0, 0, 0
  XYZ : | 0.437957764 0.384231567 0.142013550 |
        | 0.223083496 0.716873169 0.060058594 |
        | 0.014511108 0.097259521 0.713119507 |
diff --git a/profiles/misc/calibrated_nonzero_black.icc.txt b/profiles/misc/calibrated_nonzero_black.icc.txt
index 9dea0d9..0472c55 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.001292041, 0 (Max error: 0.00392152) (D-gap: -1.16415e-10)
+  ~= : 2.199834, 0.9994049, -3.508671e-05, 0.3307393, 0.003921569, 0.001289368, 0 (Max error: 0.00474447) (D-gap: -2.67371e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.199834, 0.9994049, -3.508671e-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.001289368, 0 (Max error: 0.00474447) (D-gap: -2.67371e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  XYZ : | 0.436614990 0.385345459 0.142242432 |
        | 0.222122192 0.718399048 0.059463501 |
        | 0.012954712 0.096542358 0.715393066 |
diff --git a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index eb33b87..4383008 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, -0.0001003884, 0 (Max error: 0.00578315) (D-gap: -2.56056e-07)
+  ~= : 2.231975, 1.004669, -0.004109052, 0.01206226, 0.03921569, -8.392334e-05, 0 (Max error: 0.00599737) (D-gap: 1.6209e-05)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.198176, 1.010323, -0.008952959, 0.009727627, 0.02352941, 0.0001335621, 0 (Max error: 0.00397569) (D-gap: -2.71102e-08)
+  ~= : 2.198176, 1.010323, -0.008952959, 0.009727627, 0.02352941, 0.0001678467, 0 (Max error: 0.00397193) (D-gap: 3.42575e-05)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  XYZ : | 0.449279785 0.382583618 0.132339478 |
        | 0.224472046 0.722351074 0.053176880 |
        | 0.001129150 0.053558350 0.770217896 |
diff --git a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
index e4e8f31..4ab21fe 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.0005303656, 0 (Max error: 0.0030936) (D-gap: -7.5018e-07)
+  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (Max error: 0.00315094) (D-gap: 0.000186293)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0005303656, 0 (Max error: 0.0030936) (D-gap: -7.5018e-07)
+  ~= : 2.41619, 0.9430695, 0.06005336, 0.0774319, 0.03921569, -0.0003433228, 0 (Max error: 0.00315094) (D-gap: 0.000186293)
 bTRC : 16-bit table with 256 entries
-  ~= : 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)
+  ~= : 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)
  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 7277245..96a789e 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 59a21be..dc4a026 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 b584148..45e14ec 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 77973ae..f9f5d26 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.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
  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 b4107cd..f16f694 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 0084008b 007f00ff  00808100 007f7f7f 007b75ff  006dff00 006cff34 0067ffff
+	00850000 0084008b 007f00ff  00808100 007f7f7f 007b75ff  006eff00 006cff34 0067ffff
 	00ff0000 00ff008b 00ff00ff  00ff8100 00ff7f7f 00ff75ff  00ffff00 00ffff34 00ffffff
 	7f000000 7f00008b 7f0000ff  7f008100 7f007f7f 7f0075ff  7f00ff00 7f00ff34 7f00ffff
-	7f850000 7f84008b 7f7f00ff  7f808100 7f7f7f7f 7f7b75ff  7f6dff00 7f6cff34 7f67ffff
+	7f850000 7f84008b 7f7f00ff  7f808100 7f7f7f7f 7f7b75ff  7f6eff00 7f6cff34 7f67ffff
 	7fff0000 7fff008b 7fff00ff  7fff8100 7fff7f7f 7fff75ff  7fffff00 7fffff34 7fffffff
 	ff000000 ff00008b ff0000ff  ff008100 ff007f7f ff0075ff  ff00ff00 ff00ff34 ff00ffff
-	ff850000 ff84008b ff7f00ff  ff808100 ff7f7f7f ff7b75ff  ff6dff00 ff6cff34 ff67ffff
+	ff850000 ff84008b ff7f00ff  ff808100 ff7f7f7f ff7b75ff  ff6eff00 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 f2df8ae..41635d6 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.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
  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 cb2ccd6..8b4733a 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.136909, -0, 12.98771, 0.003002951, -0.05485449, -0 (D-gap: -6.16126e-05)
+Inv  : 0.4166677, 1.136909, -0, 12.98771, 0.003002951, -0.05482483, -0 (D-gap: -3.19481e-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 8e38845..36bee9d 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, -1.405069e-06, 0 (Max error: 0.000239041) (D-gap: -4.00469e-07) (~sRGB)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 gTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 bTRC : 16-bit table with 1024 entries (~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)
+  ~= : 2.399984, 0.9478302, 0.05210379, 0.07771055, 0.04496579, 0.0001792908, 0 (Max error: 0.00216441) (D-gap: 0.000180295)
 TRCs ≈ sRGB
-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)
+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)
  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 62ba34d..44b19dc 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.137306, -0, 12.92114, 0.003130611, -0.05500732, -0 (D-gap: -8.9258e-06)
+Inv  : 0.4166677, 1.137306, -0, 12.92114, 0.003130611, -0.05498505, -0 (D-gap: 1.33514e-05)
  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 cdbdc5a..973d20f 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.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
 gTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
 bTRC : 16-bit table with 26 entries (~sRGB)
-  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0002416283, 0 (Max error: 0.00198713) (D-gap: -1.11759e-08) (~sRGB)
+  ~= : 2.387424, 0.9516296, 0.04789746, 0.07743954, 0.04, 0.0003929138, 0 (Max error: 0.00184847) (D-gap: 0.000151274) (~sRGB)
 TRCs ≈ sRGB
-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)
+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)
  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 19ea5a2..3e81546 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -1105,7 +1105,11 @@
 
 const skcms_TransferFunction* skcms_sRGB_Inverse_TransferFunction() {
     static const skcms_TransferFunction sRGB_inv =
+#ifndef SKCMS_LEGACY_TF_INVERT
+        {0.416666657f, 1.137283325f, -0.0f, 12.920000076f, 0.003130805f, -0.054969788f, -0.0f};
+#else
         { (float)(1/2.4), 1.137119f, 0, 12.92f, 0.0031308f, -0.055f, 0 };
+#endif
     return &sRGB_inv;
 }
 
@@ -1459,10 +1463,14 @@
     inv.b = -k * src->e;
     inv.e = -src->b / src->a;
 
-    // TODO(mtklein): we'd like to guarantee the edge cases more strongly:
-    //    inv(src(0)) = 0
-    //    inv(src(d)) = d
-    //    inv(src(1)) = 1
+#ifndef SKCMS_LEGACY_TF_INVERT
+    // Now in principle we're done.
+    // But to preserve the valuable invariant inv(src(1.0f)) == 1.0f,
+    // we'll tweak e.  These two values should be close to each other,
+    // just down to numerical precision issues, especially from powf_.
+    float s = powf_(src->a + src->b, src->g) + src->e;
+    inv.e = 1.0f - powf_(inv.a * s + inv.b, inv.g);
+#endif
 
     *dst = inv;
     return tf_is_valid(dst);
diff --git a/tests.c b/tests.c
index c6ae8a8..9e217a8 100644
--- a/tests.c
+++ b/tests.c
@@ -1271,31 +1271,20 @@
                                         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_close_to_1(skcms_TransferFunction_eval( inv, 1.0f));
+    expect(1.0f == 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(1.0f == skcms_TransferFunction_eval(&sRGB2, 1.0f));
+    expect(1.0f == skcms_TransferFunction_eval(& inv2, 1.0f));
 
-  //expect(0 == memcmp( inv, & inv2, sizeof(skcms_TransferFunction)));
+    expect(0 == memcmp( inv, & inv2, sizeof(skcms_TransferFunction)));
   //expect(0 == memcmp(sRGB, &sRGB2, sizeof(skcms_TransferFunction)));
 }