diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 632ba7a..e340ff8 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -98,6 +98,11 @@
     target_include_directories(avifmetadatatest PRIVATE ${GTEST_INCLUDE_DIRS})
     add_test(NAME avifmetadatatest COMMAND avifmetadatatest ${CMAKE_CURRENT_SOURCE_DIR}/data/)
 
+    add_executable(avifopaquetest gtest/avifopaquetest.cc)
+    target_link_libraries(avifopaquetest aviftest_helpers ${GTEST_BOTH_LIBRARIES})
+    target_include_directories(avifopaquetest PRIVATE ${GTEST_INCLUDE_DIRS})
+    add_test(NAME avifopaquetest COMMAND avifopaquetest)
+
     add_executable(avifrgbtoyuvtest gtest/avifrgbtoyuvtest.cc)
     target_link_libraries(avifrgbtoyuvtest aviftest_helpers ${GTEST_BOTH_LIBRARIES})
     target_include_directories(avifrgbtoyuvtest PRIVATE ${GTEST_INCLUDE_DIRS})
diff --git a/tests/gtest/avifopaquetest.cc b/tests/gtest/avifopaquetest.cc
new file mode 100644
index 0000000..5a48526
--- /dev/null
+++ b/tests/gtest/avifopaquetest.cc
@@ -0,0 +1,31 @@
+// Copyright 2022 Google LLC
+// SPDX-License-Identifier: BSD-2-Clause
+
+#include "avif/avif.h"
+#include "aviftest_helpers.h"
+#include "gtest/gtest.h"
+
+namespace libavif {
+namespace {
+
+TEST(OpaqueTest, AlphaAndNoAlpha) {
+  for (bool alpha_is_opaque : {false, true}) {
+    for (int depth : {8, 10, 12}) {
+      testutil::AvifImagePtr alpha = testutil::CreateImage(
+          1, 1, depth, AVIF_PIXEL_FORMAT_YUV444, AVIF_PLANES_ALL);
+      testutil::AvifImagePtr no_alpha = testutil::CreateImage(
+          1, 1, depth, AVIF_PIXEL_FORMAT_YUV444, AVIF_PLANES_YUV);
+
+      const uint32_t max_value = (1u << depth) - 1;
+      const uint32_t yuva[] = {max_value, max_value, max_value,
+                               alpha_is_opaque ? max_value : (max_value - 1)};
+      testutil::FillImagePlain(alpha.get(), yuva);
+      testutil::FillImagePlain(no_alpha.get(), yuva);
+
+      EXPECT_EQ(testutil::AreImagesEqual(*alpha, *no_alpha), alpha_is_opaque);
+    }
+  }
+}
+
+}  // namespace
+}  // namespace libavif
diff --git a/tests/gtest/aviftest_helpers.cc b/tests/gtest/aviftest_helpers.cc
index daa2cc9..f48e970 100644
--- a/tests/gtest/aviftest_helpers.cc
+++ b/tests/gtest/aviftest_helpers.cc
@@ -166,6 +166,12 @@
     const uint8_t* row1 = avifImagePlane(&image1, c);
     const uint8_t* row2 = avifImagePlane(&image2, c);
     if (!row1 != !row2) {
+      // Maybe one image contains an opaque alpha channel while the other has no
+      // alpha channel, but they should still be considered equal.
+      if (c == AVIF_CHAN_A && avifImageIsOpaque(&image1) &&
+          avifImageIsOpaque(&image2)) {
+        continue;
+      }
       return false;
     }
     const uint32_t row_bytes1 = avifImagePlaneRowBytes(&image1, c);
