diff --git a/src/codec_aom.c b/src/codec_aom.c
index 1f131cd..640f56a 100644
--- a/src/codec_aom.c
+++ b/src/codec_aom.c
@@ -142,7 +142,7 @@
             nclx.colourPrimaries = (uint16_t)codec->internal->image->cp;
             nclx.transferCharacteristics = (uint16_t)codec->internal->image->tc;
             nclx.matrixCoefficients = (uint16_t)codec->internal->image->mc;
-            nclx.fullRangeFlag = (image->yuvRange == AVIF_RANGE_LIMITED) ? AVIF_NCLX_LIMITED_RANGE : AVIF_NCLX_FULL_RANGE;
+            nclx.range = image->yuvRange;
             avifImageSetProfileNCLX(image, &nclx);
         }
 
diff --git a/src/codec_dav1d.c b/src/codec_dav1d.c
index d3c45bf..fef0642 100644
--- a/src/codec_dav1d.c
+++ b/src/codec_dav1d.c
@@ -150,7 +150,7 @@
             nclx.colourPrimaries = (uint16_t)dav1dImage->seq_hdr->pri;
             nclx.transferCharacteristics = (uint16_t)dav1dImage->seq_hdr->trc;
             nclx.matrixCoefficients = (uint16_t)dav1dImage->seq_hdr->mtrx;
-            nclx.fullRangeFlag = (image->yuvRange == AVIF_RANGE_LIMITED) ? AVIF_NCLX_LIMITED_RANGE : AVIF_NCLX_FULL_RANGE;
+            nclx.range = image->yuvRange;
             avifImageSetProfileNCLX(image, &nclx);
         }
 
diff --git a/src/codec_libgav1.c b/src/codec_libgav1.c
index eb61c97..547138e 100644
--- a/src/codec_libgav1.c
+++ b/src/codec_libgav1.c
@@ -112,7 +112,7 @@
             nclx.colourPrimaries = (uint16_t)gav1Image->color_primary;
             nclx.transferCharacteristics = (uint16_t)gav1Image->transfer_characteristics;
             nclx.matrixCoefficients = (uint16_t)gav1Image->matrix_coefficients;
-            nclx.fullRangeFlag = (image->yuvRange == AVIF_RANGE_LIMITED) ? AVIF_NCLX_LIMITED_RANGE : AVIF_NCLX_FULL_RANGE;
+            nclx.range = image->yuvRange;
             avifImageSetProfileNCLX(image, &nclx);
         }
 
diff --git a/src/read.c b/src/read.c
index 882a689..bae84cd 100644
--- a/src/read.c
+++ b/src/read.c
@@ -576,8 +576,7 @@
             ((tileProfile == AVIF_PROFILE_FORMAT_NCLX) &&
              ((tile->image->profileFormat != tileProfile) || (tile->image->nclx.colourPrimaries != tileNCLX->colourPrimaries) ||
               (tile->image->nclx.transferCharacteristics != tileNCLX->transferCharacteristics) ||
-              (tile->image->nclx.matrixCoefficients != tileNCLX->matrixCoefficients) ||
-              (tile->image->nclx.fullRangeFlag != tileNCLX->fullRangeFlag)))) {
+              (tile->image->nclx.matrixCoefficients != tileNCLX->matrixCoefficients) || (tile->image->nclx.range != tileNCLX->range)))) {
             return AVIF_FALSE;
         }
     }
@@ -848,16 +847,21 @@
         data->properties.prop[propertyIndex].colr.icc = avifROStreamCurrent(&s);
         data->properties.prop[propertyIndex].colr.iccSize = avifROStreamRemainingBytes(&s);
     } else if (!memcmp(colourType, "nclx", 4)) {
+        uint16_t tmp16;
         // unsigned int(16) colour_primaries;
-        CHECK(avifROStreamReadU16(&s, &data->properties.prop[propertyIndex].colr.nclx.colourPrimaries));
+        CHECK(avifROStreamReadU16(&s, &tmp16));
+        data->properties.prop[propertyIndex].colr.nclx.colourPrimaries = (avifNclxColourPrimaries)tmp16;
         // unsigned int(16) transfer_characteristics;
-        CHECK(avifROStreamReadU16(&s, &data->properties.prop[propertyIndex].colr.nclx.transferCharacteristics));
+        CHECK(avifROStreamReadU16(&s, &tmp16));
+        data->properties.prop[propertyIndex].colr.nclx.transferCharacteristics = (avifNclxTransferCharacteristics)tmp16;
         // unsigned int(16) matrix_coefficients;
-        CHECK(avifROStreamReadU16(&s, &data->properties.prop[propertyIndex].colr.nclx.matrixCoefficients));
+        CHECK(avifROStreamReadU16(&s, &tmp16));
+        data->properties.prop[propertyIndex].colr.nclx.matrixCoefficients = (avifNclxMatrixCoefficients)tmp16;
         // unsigned int(1) full_range_flag;
         // unsigned int(7) reserved = 0;
-        CHECK(avifROStreamRead(&s, &data->properties.prop[propertyIndex].colr.nclx.fullRangeFlag, 1));
-        data->properties.prop[propertyIndex].colr.nclx.fullRangeFlag |= 0x80;
+        uint8_t tmp8;
+        CHECK(avifROStreamRead(&s, &tmp8, 1));
+        data->properties.prop[propertyIndex].colr.nclx.range = (avifRange)(tmp8 | 0x80);
         data->properties.prop[propertyIndex].colr.format = AVIF_PROFILE_FORMAT_NCLX;
     }
     return AVIF_TRUE;
diff --git a/src/write.c b/src/write.c
index d50436d..41b3865 100644
--- a/src/write.c
+++ b/src/write.c
@@ -401,7 +401,7 @@
                 avifRWStreamWriteU16(&s, item->image->nclx.colourPrimaries);         // unsigned int(16) colour_primaries;
                 avifRWStreamWriteU16(&s, item->image->nclx.transferCharacteristics); // unsigned int(16) transfer_characteristics;
                 avifRWStreamWriteU16(&s, item->image->nclx.matrixCoefficients);      // unsigned int(16) matrix_coefficients;
-                avifRWStreamWriteU8(&s, item->image->nclx.fullRangeFlag & 0x80);     // unsigned int(1) full_range_flag;
+                avifRWStreamWriteU8(&s, item->image->nclx.range & 0x80);             // unsigned int(1) full_range_flag;
                                                                                      // unsigned int(7) reserved = 0;
                 avifRWStreamFinishBox(&s, colr);
                 ipmaPush(&item->ipma, ++itemPropertyIndex);
