Rename wuffs_gif__quirk_background_is_opaque
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 9a3f3a2..bb7ab58 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -3336,10 +3336,10 @@
     wuffs_gif__quirk_image_bounds_are_strict  //
         WUFFS_BASE__POTENTIALLY_UNUSED = 1041635330;
 
-#define WUFFS_GIF__QUIRK_BACKGROUND_IS_OPAQUE 1041635331
+#define WUFFS_GIF__QUIRK_HONOR_BACKGROUND_COLOR 1041635331
 
-static const uint32_t                      //
-    wuffs_gif__quirk_background_is_opaque  //
+static const uint32_t                        //
+    wuffs_gif__quirk_honor_background_color  //
         WUFFS_BASE__POTENTIALLY_UNUSED = 1041635331;
 
 #define WUFFS_GIF__QUIRK_REJECT_EMPTY_FRAME 1041635333
@@ -3469,7 +3469,7 @@
     bool f_quirk_enabled_delay_num_decoded_frames;
     bool f_quirk_enabled_ignore_too_much_pixel_data;
     bool f_quirk_enabled_image_bounds_are_strict;
-    bool f_quirk_enabled_background_is_opaque;
+    bool f_quirk_enabled_honor_background_color;
     bool f_quirk_enabled_reject_empty_frame;
     bool f_quirk_enabled_reject_empty_palette;
     bool f_delayed_num_decoded_frames;
@@ -8774,7 +8774,7 @@
     } else if (a_quirk == 1041635330) {
       self->private_impl.f_quirk_enabled_image_bounds_are_strict = a_enabled;
     } else if (a_quirk == 1041635331) {
-      self->private_impl.f_quirk_enabled_background_is_opaque = a_enabled;
+      self->private_impl.f_quirk_enabled_honor_background_color = a_enabled;
     } else if (a_quirk == 1041635333) {
       self->private_impl.f_quirk_enabled_reject_empty_frame = a_enabled;
     } else if (a_quirk == 1041635332) {
@@ -8835,7 +8835,7 @@
       goto suspend;
     }
     v_ffio = !self->private_impl.f_gc_has_transparent_index;
-    if (!self->private_impl.f_quirk_enabled_background_is_opaque) {
+    if (!self->private_impl.f_quirk_enabled_honor_background_color) {
       v_ffio =
           (v_ffio && (self->private_impl.f_frame_rect_x0 == 0) &&
            (self->private_impl.f_frame_rect_y0 == 0) &&
@@ -9846,7 +9846,7 @@
             ((uint8_t)(((v_argb >> 24) & 255)));
         v_i += 1;
       }
-      if (self->private_impl.f_quirk_enabled_background_is_opaque) {
+      if (self->private_impl.f_quirk_enabled_honor_background_color) {
         if ((v_background_color_index != 0) &&
             (((uint32_t)(v_background_color_index)) < v_num_palette_entries)) {
           v_j = (4 * ((uint32_t)(v_background_color_index)));
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 403729b..656d2fd 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -88,18 +88,21 @@
 // https://github.com/google/wuffs/blob/master/test/data/artificial/gif-frame-out-of-bounds.gif.make-artificial.txt
 pub const quirk_image_bounds_are_strict base.u32 = (0xF8586 << 10) | 2
 
-// When this quirk is enabled, the background color is opaque instead of always
-// being transparent black. If the background color index in the GIF header is
-// non-zero but less than the global palette's size, the background color is
-// that global palette's entry. Otherwise, it is opaque black.
+// When this quirk is enabled, the background color is taken from the GIF
+// instead of always being transparent black. If the background color index in
+// the GIF header is non-zero but less than the global palette's size, the
+// global background color is that global palette's entry. Otherwise, it is
+// opaque black. A frame's background color is transparent if the frame palette
+// contains a transparent color. Otherwise, it is the global background color.
+// Note that different frames can have different background colors.
 //
 // Specifically, if the initial frame bounds is smaller than the image bounds,
 // those pixels outside the initial frame bounds are assumed to start as that
-// opaque background color. The same color should be used when processing
-// WUFFS_BASE__ANIMATION_DISPOSAL__RESTORE_BACKGROUND. In both cases, the
-// caller of Wuffs, not Wuffs itself, is responsible for filling the pixel
-// buffer with that color.
-pub const quirk_background_is_opaque base.u32 = (0xF8586 << 10) | 3
+// frame background color. The frame background color should also be used when
+// processing WUFFS_BASE__ANIMATION_DISPOSAL__RESTORE_BACKGROUND. In both
+// cases, the caller of Wuffs, not Wuffs itself, is responsible for filling the
+// pixel buffer with that color.
+pub const quirk_honor_background_color base.u32 = (0xF8586 << 10) | 3
 
 // When this quirk is enabled, a frame with zero width or height is rejected
 // during decode_frame (but accepted during decode_frame_config).
@@ -178,7 +181,7 @@
 	quirk_enabled_delay_num_decoded_frames   base.bool,
 	quirk_enabled_ignore_too_much_pixel_data base.bool,
 	quirk_enabled_image_bounds_are_strict    base.bool,
-	quirk_enabled_background_is_opaque       base.bool,
+	quirk_enabled_honor_background_color     base.bool,
 	quirk_enabled_reject_empty_frame         base.bool,
 	quirk_enabled_reject_empty_palette       base.bool,
 
@@ -244,8 +247,8 @@
 			this.quirk_enabled_ignore_too_much_pixel_data = args.enabled
 		} else if args.quirk == quirk_image_bounds_are_strict {
 			this.quirk_enabled_image_bounds_are_strict = args.enabled
-		} else if args.quirk == quirk_background_is_opaque {
-			this.quirk_enabled_background_is_opaque = args.enabled
+		} else if args.quirk == quirk_honor_background_color {
+			this.quirk_enabled_honor_background_color = args.enabled
 		} else if args.quirk == quirk_reject_empty_frame {
 			this.quirk_enabled_reject_empty_frame = args.enabled
 		} else if args.quirk == quirk_reject_empty_palette {
@@ -269,7 +272,7 @@
 	// TODO: if this.end_of_data, return an error and/or set dst to zero?
 
 	ffio = not this.gc_has_transparent_index
-	if not this.quirk_enabled_background_is_opaque {
+	if not this.quirk_enabled_honor_background_color {
 		ffio = ffio and
 			(this.frame_rect_x0 == 0) and
 			(this.frame_rect_y0 == 0) and
@@ -588,7 +591,7 @@
 			i += 1
 		}
 
-		if this.quirk_enabled_background_is_opaque {
+		if this.quirk_enabled_honor_background_color {
 			if (background_color_index <> 0) and
 				((background_color_index as base.u32) < num_palette_entries) {
 
diff --git a/test/c/std/gif.c b/test/c/std/gif.c
index 52a82e6..af039a5 100644
--- a/test/c/std/gif.c
+++ b/test/c/std/gif.c
@@ -873,7 +873,7 @@
       RETURN_FAIL("q=%d: initialize: \"%s\"", q, status);
     }
     wuffs_gif__decoder__set_quirk_enabled(
-        &dec, wuffs_gif__quirk_background_is_opaque, q);
+        &dec, wuffs_gif__quirk_honor_background_color, q);
 
     wuffs_base__image_config ic = ((wuffs_base__image_config){});
     wuffs_base__io_reader src_reader = wuffs_base__io_buffer__reader(&src);
@@ -915,7 +915,7 @@
       RETURN_FAIL("q=%d: initialize: \"%s\"", q, status);
     }
     wuffs_gif__decoder__set_quirk_enabled(
-        &dec, wuffs_gif__quirk_background_is_opaque, q);
+        &dec, wuffs_gif__quirk_honor_background_color, q);
 
     wuffs_base__image_config ic = ((wuffs_base__image_config){});
     wuffs_base__io_reader src_reader = wuffs_base__io_buffer__reader(&src);