remove loop in powf

Looking at the diff, I don't think we'd land the CL in the other direction.

Bug: chromium:842374

Change-Id: I9cbfbcbabbe6a3b36c1369e1ab81ff953cfb3c0b
Reviewed-on: https://skia-review.googlesource.com/128004
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@chromium.org>
diff --git a/profiles/color.org/Lower_Left.icc.txt b/profiles/color.org/Lower_Left.icc.txt
index 490a99d..5d688ee 100644
--- a/profiles/color.org/Lower_Left.icc.txt
+++ b/profiles/color.org/Lower_Left.icc.txt
@@ -30,7 +30,7 @@
 	72bb1f 241201 a9c7cd aecf19 5866a8 523605 3d256d
 	444e3e 444920 3a3206 7d9376 7259bc a0ce22 1a0e76
 	7d657d 272948 4c8b13 311793 060507 412207 392125
-	4e2b04 1c2b23 542d5f 120b08 131135 47741c acc247
+	4e2b04 1c2b23 532d5f 120b08 131135 47741c abc247
 	a0cf8b cfe44a 5a8f1e 2a146a 391f84 1b2608 2814b0
 	2f247c 5c9b4b 2b300e 2c4423 211205 110901 3e5a1d
 	787c4c 6f7d21 181161 708510 3a4e0a 3c2829 765b57
diff --git a/profiles/color.org/Lower_Right.icc.txt b/profiles/color.org/Lower_Right.icc.txt
index 26dd072..51ff354 100644
--- a/profiles/color.org/Lower_Right.icc.txt
+++ b/profiles/color.org/Lower_Right.icc.txt
@@ -27,9 +27,9 @@
 	204d31 93ce15 416213 1f1032 24134e 755408 2b7921
 	914d31 211911 8e5828 aeab10 4a5e08 1f3e2b 522d94
 	b998a1 395991 7d874f 395217 361a59 a2840b b260a4
-	9f5622 0c053d ccec63 a85497 77af26 27127e 336744
+	9f5622 0c053d ccec63 a85497 77ae26 27127e 336744
 	4c4d2f 40303f 27134a 8f9154 6eba6b ab5c76 25690a
-	688787 304917 763d06 31832d 050807 180e6c 202853
+	688787 304917 763c06 31832d 050807 180e6c 202853
 	1e0e81 2b2b04 345c72 090a1b 193309 653d13 a87794
 	c4b658 c383bd 7a4620 26602b 34793a 201310 369c13
 	38751f 90710a 281a28 3f330c 0d0836 06031c 4f341e
diff --git a/profiles/color.org/Upper_Left.icc.txt b/profiles/color.org/Upper_Left.icc.txt
index e6115cb..314f1c7 100644
--- a/profiles/color.org/Upper_Left.icc.txt
+++ b/profiles/color.org/Upper_Left.icc.txt
@@ -20,8 +20,11 @@
  A2B : "M", Matrix, "B"
  "M" : 3 inputs
   M0 : 16-bit table with 256 entries
+  ~= : 2.198538, 0.01209223, -0.0006638874, 1.290439, 0.05490196, 0.07084764, 0 (Max error: 79.0266) (D-gap: 0)
   M1 : 16-bit table with 256 entries
+  ~= : 2.198538, 0.01209223, -0.0006638874, 1.290439, 0.05490196, 0.07084764, 0 (Max error: 79.0266) (D-gap: 0)
   M2 : 16-bit table with 256 entries
+  ~= : 2.198538, 0.01209223, -0.0006638874, 1.290439, 0.05490196, 0.07084764, 0 (Max error: 79.0266) (D-gap: 0)
 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 0c98c66..4d46322 100644
--- a/profiles/color.org/sRGB2014.icc.txt
+++ b/profiles/color.org/sRGB2014.icc.txt
@@ -23,12 +23,12 @@
  'chad' : 'sf32' :     44 : 2980
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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/AdobeColorSpin.icc.txt b/profiles/misc/AdobeColorSpin.icc.txt
index 22bd639..22bcb9a 100644
--- a/profiles/misc/AdobeColorSpin.icc.txt
+++ b/profiles/misc/AdobeColorSpin.icc.txt
@@ -33,5 +33,5 @@
 	86c288 cee445 3f8118 32196f 43248a 162406 2914b8
 	302581 388846 2b300d 1e3d21 2d1805 170d01 305319
 	7a7d4b 6e7d1e 171164 6c830b 334a07 4c302b 8b6559
-	1a1342 784e18 2d1d04 2b7e0d 241d99 0a0501 985950
+	1a1342 784e18 2d1d04 2b7e0d 241d99 0a0501 985850
 	2a1eac 3f6213 3f343f 417d1e 442290 336a17 805058
diff --git a/profiles/misc/AdobeRGB.icc.txt b/profiles/misc/AdobeRGB.icc.txt
index 26dd072..51ff354 100644
--- a/profiles/misc/AdobeRGB.icc.txt
+++ b/profiles/misc/AdobeRGB.icc.txt
@@ -27,9 +27,9 @@
 	204d31 93ce15 416213 1f1032 24134e 755408 2b7921
 	914d31 211911 8e5828 aeab10 4a5e08 1f3e2b 522d94
 	b998a1 395991 7d874f 395217 361a59 a2840b b260a4
-	9f5622 0c053d ccec63 a85497 77af26 27127e 336744
+	9f5622 0c053d ccec63 a85497 77ae26 27127e 336744
 	4c4d2f 40303f 27134a 8f9154 6eba6b ab5c76 25690a
-	688787 304917 763d06 31832d 050807 180e6c 202853
+	688787 304917 763c06 31832d 050807 180e6c 202853
 	1e0e81 2b2b04 345c72 090a1b 193309 653d13 a87794
 	c4b658 c383bd 7a4620 26602b 34793a 201310 369c13
 	38751f 90710a 281a28 3f330c 0d0836 06031c 4f341e
diff --git a/profiles/misc/Apple_Color_LCD.icc.txt b/profiles/misc/Apple_Color_LCD.icc.txt
index 94285f5..101ff39 100644
--- a/profiles/misc/Apple_Color_LCD.icc.txt
+++ b/profiles/misc/Apple_Color_LCD.icc.txt
@@ -24,12 +24,12 @@
  'aagg' : 'para' :     32 : 3652
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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/Apple_Wide_Color.icc.txt b/profiles/misc/Apple_Wide_Color.icc.txt
index 276f52a..46b9b02 100644
--- a/profiles/misc/Apple_Wide_Color.icc.txt
+++ b/profiles/misc/Apple_Wide_Color.icc.txt
@@ -21,9 +21,9 @@
   A2 : 1, 1, 0, 0, 0, 0, 0 (Identity)
 CLUT : 17 x 17 x 17 (16 bpp)
  "M" : 3 inputs
-  M0 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51714e-06)
-  M1 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51714e-06)
-  M2 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51714e-06)
+  M0 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06)
+  M1 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06)
+  M2 : 2.399994, 0.9479065, 0.05209351, 0.07739258, 0.03930664, 0, 0 (D-gap: -3.51667e-06)
 Mtrx : | 0.507255435 0.301234424 0.155698314 0.000000000 |
        | 0.239345714 0.694691539 0.065977998 0.000000000 |
        | 0.000457757 0.047393076 0.777148783 0.000000000 |
@@ -34,12 +34,12 @@
 252 random bytes transformed to linear XYZD50 bytes:
 	2c562d a2d713 4b6615 1a0e30 1e114a 614a06 3d8912
 	763f31 1c1711 734b27 a6a90d 4c5f06 2b442b 452790
-	a990a0 4a6295 7c864f 405519 2c1558 947e08 9a53ae
+	a990a0 4a6295 7c864f 405519 2c1558 947e08 9953ae
 	894a24 0c0539 d3ef66 8f44a4 89b829 23107a 477243
 	484a2f 372c3d 201047 898d53 90ce70 955080 3d7608
 	758d86 394d19 5d2d01 489622 080908 190f69 262b52
 	1d0e7c 282a03 456574 0b0b1a 23370b 4d3113 926c93
-	beb65d ae7ac1 5f381f 386c26 4c8837 190f0f 5db413
+	beb65d ad7ac1 5f381f 386c26 4c8837 190f0f 5db413
 	508122 7e6808 211726 362e0c 0e0933 06031b 3f2c1d
 	69606b 553760 366108 562862 321728 2b304f 5e668c
 	294214 322582 110a31 5f3004 55980a 03020d 505baa
diff --git a/profiles/misc/Coated_FOGRA39_CMYK.icc.txt b/profiles/misc/Coated_FOGRA39_CMYK.icc.txt
index a9f0d99..465d1e9 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.054479, 1.018631, -0.007989263, 0.8365758, 0.007843138, 0.006561379, 0 (Max error: 0.0166091) (D-gap: 0)
+  ~= : 1.054479, 1.018631, -0.007989263, 0.8365758, 0.007843138, 0.00656138, 0 (Max error: 0.0166587) (D-gap: 4.65661e-10)
   A1 : 16-bit table with 256 entries
-  ~= : 1.11722, 1.017532, 0.0126594, 0.7665369, 0.007843138, -0.007086464, 0 (Max error: 0.0234658) (D-gap: -2.12155e-06)
+  ~= : 1.117218, 1.017532, 0.01265904, 0.7665369, 0.007843138, -0.00708606, 0 (Max error: 0.0235112) (D-gap: -2.25892e-06)
   A2 : 16-bit table with 256 entries
-  ~= : 1.179164, 0.997406, 0.03462001, 0.7081712, 0.007843138, -0.01854275, 0 (Max error: 0.0164148) (D-gap: -1.47056e-06)
+  ~= : 1.179159, 0.9974022, 0.03461417, 0.7081712, 0.007843138, -0.01853919, 0 (Max error: 0.0164243) (D-gap: -6.80797e-07)
   A3 : 16-bit table with 256 entries
-  ~= : 2.917167, 0.6718483, 0.6638545, 0.7159533, 0.007843137, -0.3041279, 0 (Max error: 0.357899) (D-gap: -2.15429e-05)
+  ~= : 2.919846, 0.6719627, 0.6641445, 0.7159533, 0.007843137, -0.3041866, 0 (Max error: 0.358566) (D-gap: -3.51327e-05)
 CLUT : 11 x 11 x 11 x 11 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (Identity)
diff --git a/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt b/profiles/misc/ColorLogic_ISO_Coated_CMYK.icc.txt
index 6078fe3..84b4fc2 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.3326139, 32.72373, 16.87291, 1.200778, 0.01960784, -2.568073, 0 (Max error: 0.116077) (D-gap: -9.57232e-05)
+  ~= : 0.3560936, 16.55835, 7.13326, 1.200778, 0.01960784, -2.021732, 0 (Max error: 0.0856557) (D-gap: -0.000201819)
   A1 : 16-bit table with 256 entries
-  ~= : 0.3220655, 50.79016, 29.16965, 1.205447, 0.01960784, -2.97214, 0 (Max error: 0.148497) (D-gap: -0.000140551)
+  ~= : 0.3578774, 16.33813, 7.193894, 1.205447, 0.01960784, -2.034516, 0 (Max error: 0.0820509) (D-gap: -0.000199202)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7475383, 0.9663202, -0.1073072, 1.241552, 0.1490196, 0.100489, 0 (Max error: 0.0142951) (D-gap: -8.70228e-06)
+  ~= : 0.7475019, 0.9663048, -0.1072711, 1.241552, 0.1490196, 0.1004168, 0 (Max error: 0.0142915) (D-gap: -1.27107e-05)
   A3 : 16-bit table with 256 entries
-  ~= : 0.8032873, 0.9341962, -0.01338784, 1.182879, 0.01568628, 0.01385048, 0 (Max error: 0.0661724) (D-gap: -5.25266e-07)
+  ~= : 0.8032399, 0.9340668, -0.01337326, 1.182879, 0.01568628, 0.01381122, 0 (Max error: 0.0662429) (D-gap: -8.62405e-07)
 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: 5.96046e-08)
+  ~= : 1, 0.9961089, 0, 0, 0, 0, 0 (Max error: 0.0001477)
   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:
diff --git a/profiles/misc/Color_Spin_Gamma_18.icc.txt b/profiles/misc/Color_Spin_Gamma_18.icc.txt
index be0e673..36e7eec 100644
--- a/profiles/misc/Color_Spin_Gamma_18.icc.txt
+++ b/profiles/misc/Color_Spin_Gamma_18.icc.txt
@@ -31,7 +31,7 @@
 	8c7689 363957 519314 3a1c99 0c0a0e 49270c 472c32
 	563306 253930 5f366c 1b110f 1c1b44 538226 b6cc55
 	abd595 d3e858 679b27 341b76 45298d 27350d 2c18b2
-	3c3287 63a259 3b4016 395430 2b1809 190e01 4e6b28
+	3c3287 63a259 3a4016 395430 2b1809 190e01 4e6b28
 	888d5b 7f8e2c 1f196d 7d9412 495f0c 4b3537 856b66
 	241d4f 6b4f23 2f2208 549717 2e299b 0c0601 80535c
 	3329aa 5b791f 4a424d 67972e 442492 578325 745263
diff --git a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
index 2df6b7a..6bfb936 100644
--- a/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
+++ b/profiles/misc/DisplayCal_ASUS_NonMonotonic.icc.txt
@@ -31,23 +31,23 @@
  'meta' : 'dict' :   2312 : 738448
 
 rTRC : 16-bit table with 256 entries
-  ~= : 1.929507, 1.131073, -0.1330674, 0.03579766, 0.1176471, 0.00421149, 0 (Max error: 0.0831202) (D-gap: 0)
+  ~= : 1.929508, 1.131073, -0.1330674, 0.03579766, 0.1176471, 0.00421149, 0 (Max error: 0.0831202) (D-gap: 0)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.287458, 0.9762192, 0.03631431, 0.0311284, 0.1921569, -0.02663339, 0 (Max error: 0.0558824) (D-gap: -1.11405e-05)
+  ~= : 2.287477, 0.9762115, 0.03632147, 0.0311284, 0.1921569, -0.02663411, 0 (Max error: 0.0558824) (D-gap: -1.81049e-05)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.195802, 1.024139, -0.01592755, 0.00389105, 0.1607843, -0.01461306, 0 (Max error: 0.152941) (D-gap: -5.23892e-06)
-Best : 2.195802, 1.024139, -0.01592755, 0.00389105, 0.1607843, -0.01461306, 0 (D-gap: -5.23892e-06)
+  ~= : 2.195799, 1.024147, -0.01593353, 0.00389105, 0.1607843, -0.01461204, 0 (Max error: 0.152941) (D-gap: -7.77585e-06)
+Best : 2.195799, 1.024147, -0.01593353, 0.00389105, 0.1607843, -0.01461204, 0 (D-gap: -7.77585e-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.9896588, 1.006345, 0.1527976, 1.000015, 0.125, -0.1572979, 0 (Max error: 0.0184776) (D-gap: -4.46141e-05)
+  ~= : 0.9896749, 1.006248, 0.1542419, 1.000015, 0.125, -0.1587768, 0 (Max error: 0.0184402) (D-gap: -9.11504e-05)
   A1 : 16-bit table with 2049 entries
-  ~= : 0.9858602, 1.008664, 0.1449719, 1.000015, 0.125, -0.1511051, 0 (Max error: 0.0167674) (D-gap: -4.30495e-05)
+  ~= : 0.9858807, 1.00856, 0.1456838, 1.000015, 0.125, -0.1518457, 0 (Max error: 0.0167389) (D-gap: -8.93921e-05)
   A2 : 16-bit table with 2049 entries
-  ~= : 0.9883902, 1.008961, 0.3895943, 1.000015, 0.03125, -0.3941225, 0 (Max error: 0.0201354) (D-gap: -4.56274e-05)
+  ~= : 0.9882579, 1.008888, 0.3841118, 1.000015, 0.03125, -0.388747, 0 (Max error: 0.0201283) (D-gap: -8.89897e-05)
 CLUT : 33 x 33 x 33 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (Identity)
diff --git a/profiles/misc/Dot_Gain_20_Grayscale.icc.txt b/profiles/misc/Dot_Gain_20_Grayscale.icc.txt
index 6d5b631..98bc131 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.73703, 0.9999313, 3.373019e-05, 0.06290531, 0.02352941, -7.422358e-06, 0 (Max error: 0.000202142) (D-gap: -3.17814e-08)
+  ~= : 1.737032, 0.9999237, 3.456433e-05, 0.06290531, 0.02352941, -7.48676e-06, 0 (Max error: 0.000202142) (D-gap: -3.6438e-08)
 gTRC : 16-bit table with 256 entries
-  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290531, 0.02352941, -7.422358e-06, 0 (Max error: 0.000202142) (D-gap: -3.17814e-08)
+  ~= : 1.737032, 0.9999237, 3.456433e-05, 0.06290531, 0.02352941, -7.48676e-06, 0 (Max error: 0.000202142) (D-gap: -3.6438e-08)
 bTRC : 16-bit table with 256 entries
-  ~= : 1.73703, 0.9999313, 3.373019e-05, 0.06290531, 0.02352941, -7.422358e-06, 0 (Max error: 0.000202142) (D-gap: -3.17814e-08)
-Best : 1.73703, 0.9999313, 3.373019e-05, 0.06290531, 0.02352941, -7.422358e-06, 0 (D-gap: -3.17814e-08)
+  ~= : 1.737032, 0.9999237, 3.456433e-05, 0.06290531, 0.02352941, -7.48676e-06, 0 (Max error: 0.000202142) (D-gap: -3.6438e-08)
+Best : 1.737032, 0.9999237, 3.456433e-05, 0.06290531, 0.02352941, -7.48676e-06, 0 (D-gap: -3.6438e-08)
  XYZ : | 0.964202881 0.000000000 0.000000000 |
        | 0.000000000 1.000000000 0.000000000 |
        | 0.000000000 0.000000000 0.824905396 |
diff --git a/profiles/misc/Gray_Gamma_22.icc.txt b/profiles/misc/Gray_Gamma_22.icc.txt
index 93d0efb..49c2104 100644
--- a/profiles/misc/Gray_Gamma_22.icc.txt
+++ b/profiles/misc/Gray_Gamma_22.icc.txt
@@ -19,15 +19,15 @@
        | 0.000000000 1.000000000 0.000000000 |
        | 0.000000000 0.000000000 0.824905396 |
 252 random bytes transformed to linear XYZD50 bytes:
-	00752e 97fb03 3c7c0b 210337 1f0455 a93001 00be18
-	d50831 2a1111 cc1e25 df9e02 516d00 075a2a 500ba1
+	00752e 96fb03 3c7c0b 210336 1f0455 a93001 00be18
+	d50831 2a1111 cb1e25 df9e02 516d00 075a2a 500ba1
 	cf74a6 087898 828c4b 346611 390162 e15f01 e30eb0
 	f00920 000043 d7ff57 db01a3 6edb19 16018b 0e9541
 	524b2d 472142 260151 9d8d50 3ffd64 e70c7d 05a500
-	49a189 295e12 bb0002 00cd25 040a07 010777 093158
+	49a189 295e12 bb0002 00cd24 040a07 010777 093158
 	06018f 372900 078176 030b1d 0f4905 951210 c8449b
 	eb9f52 e543c8 b3101f 029426 08b634 2d0410 04f605
 	1baa16 ca4d02 300c2a 562408 02053b 01001f 6d181d
 	775772 7f1a6c 0c8601 8d0069 59002b 123556 3b6e95
-	0d580e 201994 0b0339 c00203 1acb00 00000d 1765b3
+	0d580e 201993 0b0339 c00203 1acb00 00000d 1765b3
 	15e504 790d30 274f3a ab1922 03c035 931217 1e6f8e
diff --git a/profiles/misc/HD_709.icc.txt b/profiles/misc/HD_709.icc.txt
index 9818017..f09a790 100644
--- a/profiles/misc/HD_709.icc.txt
+++ b/profiles/misc/HD_709.icc.txt
@@ -24,12 +24,12 @@
  'aagg' : 'para' :     32 : 2696
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000251848) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000251848) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-06)
  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 1654f82..7a41e8f 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.010955, 1.063438, -0.03336278, 0.7801556, 0.03137255, 0.02447547, 0 (Max error: 0.0511699) (D-gap: -1.86265e-09)
+  ~= : 1.010961, 1.063446, -0.03336301, 0.7801556, 0.03137255, 0.02447547, 0 (Max error: 0.0512881) (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.00923496) (D-gap: 0)
+  ~= : 1.117949, 1.022003, -0.02805499, 0.6270149, 0.02745098, 0.01721218, 0 (Max error: 0.009296) (D-gap: 0)
   A2 : 16-bit table with 256 entries
-  ~= : 1.158909, 0.9902115, 0.04163934, 0.6193255, 0.02352941, -0.02748396, 0 (Max error: 0.00835955) (D-gap: -4.03915e-06)
+  ~= : 1.15892, 0.9902, 0.04166482, 0.6193255, 0.02352941, -0.02750144, 0 (Max error: 0.00840104) (D-gap: -6.04335e-06)
   A3 : 16-bit table with 256 entries
-  ~= : 1.834369, 0.753849, 0.3802689, 0.3229572, 0.003921569, -0.1709154, 0 (Max error: 0.0588035) (D-gap: -4.46185e-05)
+  ~= : 1.833982, 0.7539101, 0.38013, 0.3229572, 0.003921569, -0.1708632, 0 (Max error: 0.0587234) (D-gap: -3.62739e-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 fd8479b..155ee06 100644
--- a/profiles/misc/Kodak_sRGB.icc.txt
+++ b/profiles/misc/Kodak_sRGB.icc.txt
@@ -21,31 +21,31 @@
  'bTRC' : 'curv' :    524 : 149844
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.411193, 0.9417953, 0.05645765, 0.06968518, 0.04313726, 0.003313827, 0.003921568 (Max error: 0.00324828) (D-gap: -1.23261e-06)
+  ~= : 2.411186, 0.9417992, 0.05645653, 0.06968518, 0.04313726, 0.0033139, 0.003921568 (Max error: 0.0032602) (D-gap: -1.47521e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.411193, 0.9417953, 0.05645765, 0.06968518, 0.04313726, 0.003313827, 0.003921568 (Max error: 0.00324828) (D-gap: -1.23261e-06)
+  ~= : 2.411186, 0.9417992, 0.05645653, 0.06968518, 0.04313726, 0.0033139, 0.003921568 (Max error: 0.0032602) (D-gap: -1.47521e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.411193, 0.9417953, 0.05645765, 0.06968518, 0.04313726, 0.003313827, 0.003921568 (Max error: 0.00324828) (D-gap: -1.23261e-06)
-Best : 2.411193, 0.9417953, 0.05645765, 0.06968518, 0.04313726, 0.003313827, 0.003921568 (D-gap: -1.23261e-06)
+  ~= : 2.411186, 0.9417992, 0.05645653, 0.06968518, 0.04313726, 0.0033139, 0.003921568 (Max error: 0.0032602) (D-gap: -1.47521e-06)
+Best : 2.411186, 0.9417992, 0.05645653, 0.06968518, 0.04313726, 0.0033139, 0.003921568 (D-gap: -1.47521e-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.7249107, 1.408693, 0.3596087, 0.7458658, 0.0627451, -0.5119742, 0 (Max error: 0.0031767) (D-gap: -0.000107408)
+  ~= : 0.7266448, 1.400414, 0.3512399, 0.7458658, 0.0627451, -0.5031613, 0 (Max error: 0.00319708) (D-gap: -0.000133157)
   A1 : 16-bit table with 256 entries
-  ~= : 0.7249107, 1.408693, 0.3596087, 0.7458658, 0.0627451, -0.5119742, 0 (Max error: 0.0031767) (D-gap: -0.000107408)
+  ~= : 0.7266448, 1.400414, 0.3512399, 0.7458658, 0.0627451, -0.5031613, 0 (Max error: 0.00319708) (D-gap: -0.000133157)
   A2 : 16-bit table with 256 entries
-  ~= : 0.7249107, 1.408693, 0.3596087, 0.7458658, 0.0627451, -0.5119742, 0 (Max error: 0.0031767) (D-gap: -0.000107408)
+  ~= : 0.7266448, 1.400414, 0.3512399, 0.7458658, 0.0627451, -0.5031613, 0 (Max error: 0.00319708) (D-gap: -0.000133157)
 CLUT : 8 x 8 x 8 (16 bpp)
  "B" : 3 outputs
   B0 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 7.927418e-06, 0.9980438, 0.9982907, 0.004847407, 0 (Max error: 0.00195366) (D-gap: 3.54648e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
   B1 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 7.927418e-06, 0.9980438, 0.9982907, 0.004847407, 0 (Max error: 0.00195366) (D-gap: 3.54648e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
   B2 : 16-bit table with 4096 entries
-  ~= : 4.998877, 1, 7.927418e-06, 0.9980438, 0.9982907, 0.004847407, 0 (Max error: 0.00195366) (D-gap: 3.54648e-05)
+  ~= : 4.998877, 1, 2.980232e-07, 0.9980438, 0.9982907, 0.004875124, 0 (Max error: 0.00195366) (D-gap: -3.8147e-06)
 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/MartiMaria_browsertest_HARD.icc.txt b/profiles/misc/MartiMaria_browsertest_HARD.icc.txt
index d1a5cc8..eb76181 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: 5.96046e-08)
+  ~= : 1, 0.003875792, 0, 0, 0, 0, 0 (Max error: 0.000140131)
 bTRC : 16-bit table with 255 entries
  XYZ : | 0.964202881 0.000000000 0.964202881 |
        | 1.000000000 0.000000000 1.000000000 |
diff --git a/profiles/misc/Phase_One_P25.icc.txt b/profiles/misc/Phase_One_P25.icc.txt
index ac4b3ff..0cb8fb5 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.3803044, 1.742777, 0.01527609, 3.844358, 0.007843138, -0.2298338, 0 (Max error: 0.0203409) (D-gap: -2.93106e-05)
+  ~= : 0.380209, 1.743309, 0.01529628, 3.844358, 0.007843138, -0.2300332, 0 (Max error: 0.0201116) (D-gap: -5.88894e-05)
 gTRC : 16-bit table with 256 entries
 bTRC : 16-bit table with 256 entries
-  ~= : 0.7391114, 0.8479661, -0.009976073, 2.721141, 0.01176471, 0.03201343, 0 (Max error: 0.140032) (D-gap: 0)
+  ~= : 0.7390666, 0.8478584, -0.009974806, 2.721141, 0.01176471, 0.03201343, 0 (Max error: 0.140045) (D-gap: 0)
  XYZ : | 0.647903442 0.357360840 0.156417847 |
        | 0.382919312 1.109725952 0.000000000 |
        | 0.083267212 0.679275513 0.523422241 |
diff --git a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
index 4228868..3233c73 100644
--- a/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
+++ b/profiles/misc/SWOP_Coated_20_GCR_CMYK.icc.txt
@@ -21,8 +21,11 @@
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
   A1 : 16-bit table with 256 entries
+  ~= : 1.334051, 0.04514098, 0.9326822, 0.7043535, 0.2078432, -0.7772038, 0 (Max error: 12.4244) (D-gap: -0.000270456)
   A2 : 16-bit table with 256 entries
+  ~= : 1.334051, 0.04514098, 0.9326822, 0.7043535, 0.2078432, -0.7772038, 0 (Max error: 12.4244) (D-gap: -0.000270456)
   A3 : 16-bit table with 256 entries
+  ~= : 1.334051, 0.04514098, 0.9326822, 0.7043535, 0.2078432, -0.7772038, 0 (Max error: 12.4244) (D-gap: -0.000270456)
 CLUT : 16 x 16 x 16 x 16 (16 bpp)
  "B" : 3 outputs
   B0 : 1, 1, 0, 0, 0, 0, 0 (Identity)
diff --git a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
index fc2a956..7963771 100644
--- a/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
+++ b/profiles/misc/US_Web_Coated_SWOP_CMYK.icc.txt
@@ -19,13 +19,12 @@
  A2B : "A", CLUT, "B"
  "A" : 4 inputs
   A0 : 16-bit table with 256 entries
-  ~= : 0.746671, 1.270082, 0.2796136, 2.132296, 0.003921569, -0.3829373, 0 (Max error: 0.0050078) (D-gap: -5.24605e-05)
+  ~= : 0.7457057, 1.273026, 0.2826105, 2.132296, 0.003921569, -0.3865254, 0 (Max error: 0.00503409) (D-gap: -8.13985e-05)
   A1 : 16-bit table with 256 entries
-  ~= : 1.001741, 0.9817276, -0.01539965, 1.622568, 0.01568628, 0.02545205, 0 (Max error: 0.00972801) (D-gap: 0)
+  ~= : 1.001741, 0.9817276, -0.01539965, 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.0163749) (D-gap: 0)
+  ~= : 1.043714, 0.997036, -0.01563978, 1.68677, 0.01568628, 0.02645914, 0 (Max error: 0.0163711) (D-gap: 0)
   A3 : 16-bit table with 256 entries
-  ~= : 0.7897137, 0.04901992, 2.680046, 1.575875, 0.01568628, -2.154173, 0 (Max error: 31.6908) (D-gap: -0.00024261)
 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/sRGB_Calibrated_Heterogeneous.icc.txt b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
index 789f071..dd2a878 100644
--- a/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Heterogeneous.icc.txt
@@ -16,12 +16,12 @@
  'cprt' : 'mluc' :     60 : 1944
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.231973, 1.004654, -0.00410875, 0.01206226, 0.03921569, -0.0001004042, 0 (Max error: 0.00578243) (D-gap: -1.65484e-07)
+  ~= : 2.231977, 1.004654, -0.00410851, 0.01206226, 0.03921569, -0.0001004114, 0 (Max error: 0.00578362) (D-gap: -2.82831e-07)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.198173, 1.010284, -0.008952981, 0.009727625, 0.02352941, 0.0001335667, 0 (Max error: 0.00399894) (D-gap: -2.06201e-08)
+  ~= : 2.198176, 1.010284, -0.008952498, 0.009727625, 0.02352941, 0.0001335609, 0 (Max error: 0.00396794) (D-gap: -3.38041e-08)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.261967, 1.004623, -0.00400647, 0.0077821, 0.01960785, 6.96643e-05, 0 (Max error: 0.00376827) (D-gap: -9.02219e-10)
-Best : 2.231973, 1.004654, -0.00410875, 0.01206226, 0.03921569, -0.0001004042, 0 (D-gap: -1.65484e-07)
+  ~= : 2.261966, 1.004623, -0.004006649, 0.0077821, 0.01960785, 6.966511e-05, 0 (Max error: 0.00376081) (D-gap: -3.40515e-09)
+Best : 2.231977, 1.004654, -0.00410851, 0.01206226, 0.03921569, -0.0001004114, 0 (D-gap: -2.82831e-07)
  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 3fc0864..60165a3 100644
--- a/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
+++ b/profiles/misc/sRGB_Calibrated_Homogeneous.icc.txt
@@ -17,12 +17,12 @@
  'MS00' : 'MS10' :   7838 : 2308
 
 rTRC : 16-bit table with 256 entries
-  ~= : 2.416167, 0.9430008, 0.0600436, 0.0774319, 0.03921569, -0.0005300854, 0 (Max error: 0.00311077) (D-gap: -1.0822e-06)
+  ~= : 2.416184, 0.9430008, 0.06004674, 0.0774319, 0.03921569, -0.0005302608, 0 (Max error: 0.0031904) (D-gap: -1.40537e-06)
 gTRC : 16-bit table with 256 entries
-  ~= : 2.416167, 0.9430008, 0.0600436, 0.0774319, 0.03921569, -0.0005300854, 0 (Max error: 0.00311077) (D-gap: -1.0822e-06)
+  ~= : 2.416184, 0.9430008, 0.06004674, 0.0774319, 0.03921569, -0.0005302608, 0 (Max error: 0.0031904) (D-gap: -1.40537e-06)
 bTRC : 16-bit table with 256 entries
-  ~= : 2.416167, 0.9430008, 0.0600436, 0.0774319, 0.03921569, -0.0005300854, 0 (Max error: 0.00311077) (D-gap: -1.0822e-06)
-Best : 2.416167, 0.9430008, 0.0600436, 0.0774319, 0.03921569, -0.0005300854, 0 (D-gap: -1.0822e-06)
+  ~= : 2.416184, 0.9430008, 0.06004674, 0.0774319, 0.03921569, -0.0005302608, 0 (Max error: 0.0031904) (D-gap: -1.40537e-06)
+Best : 2.416184, 0.9430008, 0.06004674, 0.0774319, 0.03921569, -0.0005302608, 0 (D-gap: -1.40537e-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 9ec7fd7..724a96a 100644
--- a/profiles/misc/sRGB_HP.icc.txt
+++ b/profiles/misc/sRGB_HP.icc.txt
@@ -24,12 +24,12 @@
  'bTRC' : 'curv' :   2060 : 1084
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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 059c436..323d5d0 100644
--- a/profiles/misc/sRGB_HP_2.icc.txt
+++ b/profiles/misc/sRGB_HP_2.icc.txt
@@ -24,12 +24,12 @@
  'bTRC' : 'curv' :   2060 : 5201
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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 c9ac0ad..bcfb8ad 100644
--- a/profiles/misc/sRGB_black_scaled.icc.txt
+++ b/profiles/misc/sRGB_black_scaled.icc.txt
@@ -23,12 +23,12 @@
  'chad' : 'sf32' :     44 : 3004
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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 37931ef..1411c34 100644
--- a/profiles/misc/sRGB_lcms.icc.txt
+++ b/profiles/misc/sRGB_lcms.icc.txt
@@ -17,10 +17,10 @@
  'bTRC' : 'para' :     32 : 588
  'chrm' : 'chrm' :     36 : 620
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
  XYZ : | 0.435852051 0.385330200 0.143020630 |
        | 0.222381592 0.717041016 0.060592651 |
        | 0.013916016 0.097137451 0.713836670 |
@@ -59,7 +59,8 @@
   177: 35 -> 36, +1
   216: 11 -> 10, -1
   217: 0a -> 09, -1
-polyTF[0] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[1] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[2] = 0.293804 0.704237 0.0773926 0.040451
+  223: 97 -> 96, -1
+polyTF[0] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[1] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[2] = 0.294113 0.703928 0.0773926 0.040451
 This profile ≈ sRGB.
diff --git a/profiles/mobile/Display_P3_LUT.icc.txt b/profiles/mobile/Display_P3_LUT.icc.txt
index 37e980d..c73c9da 100644
--- a/profiles/mobile/Display_P3_LUT.icc.txt
+++ b/profiles/mobile/Display_P3_LUT.icc.txt
@@ -18,12 +18,12 @@
  'gTRC' : 'curv' :   2060 : 508
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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/Display_P3_parametric.icc.txt b/profiles/mobile/Display_P3_parametric.icc.txt
index ca63239..f09accd 100644
--- a/profiles/mobile/Display_P3_parametric.icc.txt
+++ b/profiles/mobile/Display_P3_parametric.icc.txt
@@ -17,10 +17,10 @@
  'bTRC' : 'para' :     32 : 508
  'gTRC' : 'para' :     32 : 508
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
  XYZ : | 0.515121460 0.291976929 0.157104492 |
        | 0.241195679 0.692245483 0.066574097 |
        | -0.001037598 0.041885376 0.784072876 |
@@ -29,10 +29,10 @@
 	7d3f2e 1e1811 7c4b24 a5a409 4a5e05 26432b 4c2998
 	af8fa1 446094 7b854c 3c5315 31175b 947905 9f51a6
 	89461e 0d063f cded5c 944599 7eb420 261282 3f6f42
-	494b2d 3b2d3f 24114b 8a8d50 7dc668 974d75 337207
+	494a2d 3b2d3f 24114b 8a8d50 7dc668 964d75 337207
 	6f8b87 344b15 642f03 43902b 070908 1a0f70 242b54
-	1f0f87 292a02 3f6374 0b0b1c 1e3609 573311 9b6c95
-	bbae53 b377c0 6a3a1d 33692a 438338 1d1010 4cac10
+	1f0f86 292a02 3f6374 0b0b1c 1e3609 573311 9b6c95
+	bbae53 b377c0 6a3a1d 33682a 438338 1d1010 4cac10
 	447d1c 826705 251828 392f0a 0e0a37 07031d 462e1d
 	6c616e 5f3a66 2e5e07 5e2b62 371928 293053 5a6591
 	234012 34258c 120a35 673203 499209 03020d 4b58ad
@@ -42,15 +42,13 @@
    31: a4 -> a3, -1
    57: 94 -> 93, -1
    79: 12 -> 11, -1
+   85: 4a -> 4b, +1
    86: 2d -> 2e, +1
-   99: 97 -> 96, -1
   113: 03 -> 02, -1
   119: 08 -> 07, -1
   127: 0f -> 0e, -1
-  128: 87 -> 86, -1
   146: 95 -> 94, -1
   153: 6a -> 69, -1
-  157: 69 -> 68, -1
   171: 82 -> 81, -1
   181: 0a -> 09, -1
   185: 1d -> 1e, +1
@@ -60,6 +58,6 @@
   218: 35 -> 36, +1
   233: 0f -> 0e, -1
   251: 8a -> 89, -1
-polyTF[0] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[1] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[2] = 0.293804 0.704237 0.0773926 0.040451
+polyTF[0] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[1] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[2] = 0.294113 0.703928 0.0773926 0.040451
diff --git a/profiles/mobile/iPhone7p.icc.txt b/profiles/mobile/iPhone7p.icc.txt
index af84f42..f6012f5 100644
--- a/profiles/mobile/iPhone7p.icc.txt
+++ b/profiles/mobile/iPhone7p.icc.txt
@@ -16,21 +16,21 @@
  'bTRC' : 'para' :     32 : 472
  'gTRC' : 'para' :     32 : 472
 
-rTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.88153e-06)
-gTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.88153e-06)
-bTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.88153e-06)
-Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.88153e-06)
+rTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06)
+gTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06)
+bTRC : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06)
+Best : 2.399994, 0.947998, 0.05200195, 0.07699585, 0.03900146, 0, 0 (D-gap: 4.87827e-06)
  XYZ : | 0.515121460 0.291976929 0.157104492 |
        | 0.241195679 0.692245483 0.066574097 |
        | -0.001052856 0.041885376 0.784072876 |
 252 random bytes transformed to linear XYZD50 bytes:
 	2b5330 99d30e 456411 1d0f33 22124f 674b04 3c841f
 	7d3f2e 1e1811 7c4b24 a5a409 4a5e05 26432b 4c2998
-	af8fa1 446094 7b854c 3c5315 31175b 947905 9f51a6
+	af8fa1 446094 7b854c 3c5315 31175b 937905 9f51a6
 	89461e 0d063f cded5c 944599 7eb420 261282 3f6f42
-	494a2d 3b2d3f 24114b 8a8d50 7dc668 974d75 337207
+	494a2d 3b2d3f 24114b 8a8d50 7dc668 964d75 337207
 	6f8b87 344b15 642f03 43902b 070908 1a0f70 242b54
-	1f0f87 292a02 3f6374 0b0b1c 1e3609 573311 9b6c95
+	1f0f86 292a02 3f6374 0b0b1c 1e3609 573311 9b6c95
 	bbae53 b377c0 6a3a1d 33682a 438338 1c1010 4cac10
 	447d1c 826705 251828 392f0a 0e0937 07031d 462e1d
 	6c616e 5f3a65 2d5e07 5e2b62 371928 293053 5a6591
@@ -39,15 +39,13 @@
 summary of diffs at each byte when profile is optimized:
    24: 1e -> 1f, +1
    31: a4 -> a3, -1
-   57: 94 -> 93, -1
    79: 12 -> 11, -1
    85: 4a -> 4b, +1
    86: 2d -> 2e, +1
-   99: 97 -> 96, -1
+  111: 64 -> 63, -1
   113: 03 -> 02, -1
   119: 08 -> 07, -1
   127: 0f -> 0e, -1
-  128: 87 -> 86, -1
   140: 09 -> 08, -1
   146: 95 -> 94, -1
   153: 6a -> 69, -1
@@ -57,6 +55,6 @@
   209: 91 -> 90, -1
   233: 0f -> 0e, -1
   251: 8a -> 89, -1
-polyTF[0] = 0.294055 0.70403 0.0769958 0.0390015
-polyTF[1] = 0.294055 0.70403 0.0769958 0.0390015
-polyTF[2] = 0.294055 0.70403 0.0769958 0.0390015
+polyTF[0] = 0.294365 0.70372 0.0769958 0.0390015
+polyTF[1] = 0.294365 0.70372 0.0769958 0.0390015
+polyTF[2] = 0.294365 0.70372 0.0769958 0.0390015
diff --git a/profiles/mobile/sRGB_LUT.icc.txt b/profiles/mobile/sRGB_LUT.icc.txt
index ce1d4b3..8252a87 100644
--- a/profiles/mobile/sRGB_LUT.icc.txt
+++ b/profiles/mobile/sRGB_LUT.icc.txt
@@ -18,12 +18,12 @@
  'gTRC' : 'curv' :   2060 : 520
 
 rTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 gTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
 bTRC : 16-bit table with 1024 entries
-  ~= : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (Max error: 0.000239041) (D-gap: -8.45175e-07)
-Best : 2.399989, 0.9477539, 0.0521014, 0.07771055, 0.04496579, -1.500161e-06, 0 (D-gap: -8.45175e-07)
+  ~= : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (Max error: 0.000239041) (D-gap: -1.07288e-06)
+Best : 2.399978, 0.9477539, 0.05209779, 0.07771055, 0.04496579, -1.302708e-06, 0 (D-gap: -1.07288e-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 48624a8..605e3ec 100644
--- a/profiles/mobile/sRGB_parametric.icc.txt
+++ b/profiles/mobile/sRGB_parametric.icc.txt
@@ -17,10 +17,10 @@
  'bTRC' : 'para' :     32 : 520
  'gTRC' : 'para' :     32 : 520
 
-rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
-Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.2748e-07) (sRGB)
+rTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+gTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+bTRC : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
+Best : 2.399994, 0.9478607, 0.05213928, 0.07739258, 0.04045105, 0, 0 (D-gap: 8.08388e-07) (sRGB)
  XYZ : | 0.436035156 0.385116577 0.143051147 |
        | 0.222488403 0.716903687 0.060607910 |
        | 0.013916016 0.097061157 0.713912964 |
@@ -32,19 +32,17 @@
 	484a2f 372c3c 1f1045 898d53 8ecb6f 83486f 427610
 	758d86 394d19 542b05 559533 080908 180f66 262b50
 	1d0d7b 282a05 486571 0b0b1a 23370c 4d3113 8e698e
-	b5ad58 a373b6 5c371e 406c2f 53873e 190f0f 62b21d
+	b5ad58 a373b6 5c371e 406c2f 52873e 190f0f 62b21d
 	518024 78650c 211726 352e0d 0e0933 06031b 3f2c1d
 	69606b 553760 39610e 51285b 2f1726 2b304f 5d668b
 	2a4215 322481 110a31 582e06 599714 03020c 4f59a4
 	63a91b 43292c 394539 5c3b22 548d3f 4d3018 506084
 summary of diffs at each byte when profile is optimized:
     2: 32 -> 33, +1
-   16: 48 -> 49, +1
    24: 1c -> 1d, +1
    42: a6 -> a5, -1
    44: 9d -> 9c, -1
    49: 86 -> 85, -1
-   54: 2a -> 2b, +1
    73: 40 -> 3f, -1
    84: 48 -> 49, +1
    85: 4a -> 4b, +1
@@ -55,12 +53,11 @@
   119: 08 -> 07, -1
   126: 1d -> 1c, -1
   155: 1e -> 1f, +1
-  159: 53 -> 52, -1
   177: 35 -> 36, +1
   216: 11 -> 10, -1
   217: 0a -> 09, -1
   223: 97 -> 96, -1
-polyTF[0] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[1] = 0.293804 0.704237 0.0773926 0.040451
-polyTF[2] = 0.293804 0.704237 0.0773926 0.040451
+polyTF[0] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[1] = 0.294113 0.703928 0.0773926 0.040451
+polyTF[2] = 0.294113 0.703928 0.0773926 0.040451
 This profile ≈ sRGB.
diff --git a/profiles/sRGB_Facebook.icc.txt b/profiles/sRGB_Facebook.icc.txt
index 5aeea57..16fdf51 100644
--- a/profiles/sRGB_Facebook.icc.txt
+++ b/profiles/sRGB_Facebook.icc.txt
@@ -17,12 +17,12 @@
  'bTRC' : 'curv' :     64 : 460
 
 rTRC : 16-bit table with 26 entries
-  ~= : 2.387399, 0.9515572, 0.04788927, 0.07743954, 0.04, 0.0002417647, 0 (Max error: 0.000966109) (D-gap: -6.27711e-07)
+  ~= : 2.387403, 0.9515495, 0.04789115, 0.07743954, 0.04, 0.0002416593, 0 (Max error: 0.000975177) (D-gap: -6.06058e-07)
 gTRC : 16-bit table with 26 entries
-  ~= : 2.387399, 0.9515572, 0.04788927, 0.07743954, 0.04, 0.0002417647, 0 (Max error: 0.000966109) (D-gap: -6.27711e-07)
+  ~= : 2.387403, 0.9515495, 0.04789115, 0.07743954, 0.04, 0.0002416593, 0 (Max error: 0.000975177) (D-gap: -6.06058e-07)
 bTRC : 16-bit table with 26 entries
-  ~= : 2.387399, 0.9515572, 0.04788927, 0.07743954, 0.04, 0.0002417647, 0 (Max error: 0.000966109) (D-gap: -6.27711e-07)
-Best : 2.387399, 0.9515572, 0.04788927, 0.07743954, 0.04, 0.0002417647, 0 (D-gap: -6.27711e-07)
+  ~= : 2.387403, 0.9515495, 0.04789115, 0.07743954, 0.04, 0.0002416593, 0 (Max error: 0.000975177) (D-gap: -6.06058e-07)
+Best : 2.387403, 0.9515495, 0.04789115, 0.07743954, 0.04, 0.0002416593, 0 (D-gap: -6.06058e-07)
  XYZ : | 0.436065674 0.385147095 0.143066406 |
        | 0.222488403 0.716873169 0.060607910 |
        | 0.013916016 0.097076416 0.714096069 |
diff --git a/src/ICCProfile.c b/src/ICCProfile.c
index 6b8c25d..b3f34d1 100644
--- a/src/ICCProfile.c
+++ b/src/ICCProfile.c
@@ -834,9 +834,9 @@
 
         .has_poly_tf = { true, true, true },
         .poly_tf = {
-        {0.293833881617f, 0.704207003117f, (float)(1/12.92), 0.04045f},
-        {0.293833881617f, 0.704207003117f, (float)(1/12.92), 0.04045f},
-        {0.293833881617f, 0.704207003117f, (float)(1/12.92), 0.04045f},
+        {0.294143557548523f, 0.703896820545197f, (float)(1/12.92), 0.04045f},
+        {0.294143557548523f, 0.703896820545197f, (float)(1/12.92), 0.04045f},
+        {0.294143557548523f, 0.703896820545197f, (float)(1/12.92), 0.04045f},
         },
     };
     return &sRGB_profile;
diff --git a/src/PortableMath.c b/src/PortableMath.c
index d63d6ab..b50cb0f 100644
--- a/src/PortableMath.c
+++ b/src/PortableMath.c
@@ -50,13 +50,6 @@
 }
 
 float powf_(float x, float y) {
-    // Handling all the integral powers first increases our precision a little. If y is very large,
-    // this loop may never terminate, but for any reasonably large y, the approximation is fine.
-    float r = 1.0f;
-    while (y >= 1.0f && y < 32) {
-        r *= x;
-        y -= 1.0f;
-    }
-
-    return (x == 0) || (x == 1) ? x : r * exp2f_(log2f_(x) * y);
+    return (x == 0) || (x == 1) ? x
+                                : exp2f_(log2f_(x) * y);
 }
diff --git a/src/Transform_inl.h b/src/Transform_inl.h
index debdf68..273edb9 100644
--- a/src/Transform_inl.h
+++ b/src/Transform_inl.h
@@ -221,16 +221,8 @@
 #define approx_exp2 NS(approx_exp2_)
 
 SI ATTR F NS(approx_pow_)(F x, float y) {
-    // Handling all the integral powers first increases our precision a little.
-    F r = F1;
-    while (y >= 1.0f) {
-        r *= x;
-        y -= 1.0f;
-    }
-
-    // TODO: The rest of this could perhaps be specialized further knowing 0 <= y < 1.
-    assert (0 <= y && y < 1);
-    return (F)if_then_else((x == F0) | (x == F1), x, r * approx_exp2(approx_log2(x) * y));
+    return (F)if_then_else((x == F0) | (x == F1), x
+                                                , approx_exp2(approx_log2(x) * y));
 }
 #define approx_pow NS(approx_pow_)
 
diff --git a/tests.c b/tests.c
index 734997e..f7974d5 100644
--- a/tests.c
+++ b/tests.c
@@ -1093,10 +1093,10 @@
     skcms_OptimizeForSpeed(&srgb);
     for (int i = 0; i < 3; i++) {
         expect(srgb.has_poly_tf[i]);
-        expect(srgb.poly_tf[i].A == 0.293833881617f);
-        expect(srgb.poly_tf[i].B == 0.704207003117f);
-        expect(srgb.poly_tf[i].C == 0.077399380505f);
-        expect(srgb.poly_tf[i].D == 0.040449999273f);
+        expect(srgb.poly_tf[i].A == 0.294143557548523f);
+        expect(srgb.poly_tf[i].B == 0.703896820545197f);
+        expect(srgb.poly_tf[i].C == 0.077399380505085f);
+        expect(srgb.poly_tf[i].D == 0.040449999272823f);
     }
 
     // Mostly a reminder to update skcms_sRGB_profile when skcms_OptimizeForSpeed() changes.