diff --git a/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lab/CieLab.kt b/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lab/CieLab.kt
index b8cfc8c..1322229 100644
--- a/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lab/CieLab.kt
+++ b/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lab/CieLab.kt
@@ -20,10 +20,15 @@
  *
  * @see <a href="https://en.wikipedia.org/wiki/CIELAB_color_space">Wikipedia</a>
  */
-public data class CieLab(
+public data class CieLab @JvmOverloads constructor(
     override val L: Double,
     override val a: Double,
     override val b: Double,
+
+    /**
+     * Reference white for CIELAB calculations. This affects the converted color.
+     */
+    val referenceWhite: CieXyz = Illuminants.D65,
 ) : Lab {
     /**
      * Convert this color to the CIE XYZ color space.
@@ -31,14 +36,13 @@
      * @see dev.kdrag0n.colorkt.tristimulus.CieXyz
      * @return Color in XYZ
      */
-    @JvmOverloads
-    public fun toXyz(refWhite: CieXyz = Illuminants.D65): CieXyz {
+    public fun toXyz(): CieXyz {
         val lp = (L + 16.0) / 116.0
 
         return CieXyz(
-            x = refWhite.x * fInv(lp + (a / 500.0)),
-            y = refWhite.y * fInv(lp),
-            z = refWhite.z * fInv(lp - (b / 200.0)),
+            x = referenceWhite.x * fInv(lp + (a / 500.0)),
+            y = referenceWhite.y * fInv(lp),
+            z = referenceWhite.z * fInv(lp - (b / 200.0)),
         )
     }
 
@@ -75,6 +79,7 @@
                 L = 116.0 * f(y / refWhite.y) - 16.0,
                 a = 500.0 * (f(x / refWhite.x) - f(y / refWhite.y)),
                 b = 200.0 * (f(y / refWhite.y) - f(z / refWhite.z)),
+                referenceWhite = refWhite,
             )
         }
     }
diff --git a/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lch/CieLch.kt b/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lch/CieLch.kt
index bba3abb..c4a7f65 100644
--- a/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lch/CieLch.kt
+++ b/src/commonMain/kotlin/dev/kdrag0n/colorkt/ucs/lch/CieLch.kt
@@ -1,8 +1,11 @@
 package dev.kdrag0n.colorkt.ucs.lch
 
+import dev.kdrag0n.colorkt.data.Illuminants
+import dev.kdrag0n.colorkt.tristimulus.CieXyz
 import dev.kdrag0n.colorkt.ucs.lab.CieLab
 import dev.kdrag0n.colorkt.util.conversion.ConversionGraph
 import kotlin.jvm.JvmName
+import kotlin.jvm.JvmOverloads
 import kotlin.jvm.JvmStatic
 import kotlin.jvm.JvmSynthetic
 
@@ -11,10 +14,15 @@
  *
  * @see dev.kdrag0n.colorkt.ucs.lch.Lch
  */
-public data class CieLch(
+public data class CieLch @JvmOverloads constructor(
     override val L: Double,
     override val C: Double,
     override val h: Double,
+
+    /**
+     * Reference white for CIELAB calculations. This affects the converted color.
+     */
+    val referenceWhite: CieXyz = Illuminants.D65,
 ) : Lch {
     /**
      * Convert this color to the Cartesian (Lab) representation of CIELAB.
@@ -26,6 +34,7 @@
         L = L,
         a = calcLabA(),
         b = calcLabB(),
+        referenceWhite = referenceWhite,
     )
 
     public companion object {
@@ -47,6 +56,7 @@
             L = L,
             C = calcLchC(),
             h = calcLchH(),
+            referenceWhite = referenceWhite,
         )
     }
 }
