diff --git a/tests/gtest/avif_fuzztest_helpers.cc b/tests/gtest/avif_fuzztest_helpers.cc
index cfb0f7b..95d7693 100644
--- a/tests/gtest/avif_fuzztest_helpers.cc
+++ b/tests/gtest/avif_fuzztest_helpers.cc
@@ -105,23 +105,16 @@
 }
 
 EncoderPtr CreateAvifEncoder(avifCodecChoice codec_choice, int max_threads,
-                             int min_quantizer, int max_quantizer,
-                             int min_quantizer_alpha, int max_quantizer_alpha,
-                             int tile_rows_log2, int tile_cols_log2,
-                             int speed) {
+                             int quality, int quality_alpha, int tile_rows_log2,
+                             int tile_cols_log2, int speed) {
   EncoderPtr encoder(avifEncoderCreate());
   if (encoder.get() == nullptr) {
     return encoder;
   }
   encoder->codecChoice = codec_choice;
   encoder->maxThreads = max_threads;
-  // minQuantizer must be at most maxQuantizer.
-  encoder->minQuantizer = std::min(min_quantizer, max_quantizer);
-  encoder->maxQuantizer = std::max(min_quantizer, max_quantizer);
-  encoder->minQuantizerAlpha =
-      std::min(min_quantizer_alpha, max_quantizer_alpha);
-  encoder->maxQuantizerAlpha =
-      std::max(min_quantizer_alpha, max_quantizer_alpha);
+  encoder->quality = quality;
+  encoder->qualityAlpha = quality_alpha;
   encoder->tileRowsLog2 = tile_rows_log2;
   encoder->tileColsLog2 = tile_cols_log2;
   encoder->speed = speed;
diff --git a/tests/gtest/avif_fuzztest_helpers.h b/tests/gtest/avif_fuzztest_helpers.h
index 14dda45..6a8fbf5 100644
--- a/tests/gtest/avif_fuzztest_helpers.h
+++ b/tests/gtest/avif_fuzztest_helpers.h
@@ -59,9 +59,8 @@
                                         bool has_alpha,
                                         const std::vector<uint16_t>& samples);
 EncoderPtr CreateAvifEncoder(avifCodecChoice codec_choice, int max_threads,
-                             int min_quantizer, int max_quantizer,
-                             int min_quantizer_alpha, int max_quantizer_alpha,
-                             int tile_rows_log2, int tile_cols_log2, int speed);
+                             int quality, int quality_alpha, int tile_rows_log2,
+                             int tile_cols_log2, int speed);
 DecoderPtr CreateAvifDecoder(avifCodecChoice codec_choice, int max_threads,
                              avifDecoderSource requested_source,
                              bool allow_progressive, bool allow_incremental,
@@ -261,23 +260,16 @@
       {AVIF_CODEC_CHOICE_AUTO, AVIF_CODEC_CHOICE_AOM});
   // MAX_NUM_THREADS from libaom/aom_util/aom_thread.h
   const auto max_threads = fuzztest::InRange(0, 64);
-  const auto min_quantizer = fuzztest::InRange(AVIF_QUANTIZER_BEST_QUALITY,
-                                               AVIF_QUANTIZER_WORST_QUALITY);
-  const auto max_quantizer = fuzztest::InRange(AVIF_QUANTIZER_BEST_QUALITY,
-                                               AVIF_QUANTIZER_WORST_QUALITY);
-  const auto min_quantizer_alpha = fuzztest::InRange(
-      AVIF_QUANTIZER_BEST_QUALITY, AVIF_QUANTIZER_WORST_QUALITY);
-  const auto max_quantizer_alpha = fuzztest::InRange(
-      AVIF_QUANTIZER_BEST_QUALITY, AVIF_QUANTIZER_WORST_QUALITY);
+  const auto quality = fuzztest::InRange(AVIF_QUALITY_WORST, AVIF_QUALITY_BEST);
+  const auto quality_alpha =
+      fuzztest::InRange(AVIF_QUALITY_WORST, AVIF_QUALITY_BEST);
   const auto tile_rows_log2 = fuzztest::InRange(0, 6);
   const auto tile_cols_log2 = fuzztest::InRange(0, 6);
   // Fuzz only a small range of 'speed' values to avoid slowing down the fuzzer
   // too much. The main goal is to fuzz libavif, not the underlying AV1 encoder.
   const auto speed = fuzztest::InRange(6, AVIF_SPEED_FASTEST);
-  return fuzztest::Map(CreateAvifEncoder, codec_choice, max_threads,
-                       min_quantizer, max_quantizer, min_quantizer_alpha,
-                       max_quantizer_alpha, tile_rows_log2, tile_cols_log2,
-                       speed);
+  return fuzztest::Map(CreateAvifEncoder, codec_choice, max_threads, quality,
+                       quality_alpha, tile_rows_log2, tile_cols_log2, speed);
 }
 
 // Generator for an arbitrary DecoderPtr with base options fuzzed (i.e.
