diff --git a/aom/aom_image.h b/aom/aom_image.h
index 65162f0..245ef2c 100644
--- a/aom/aom_image.h
+++ b/aom/aom_image.h
@@ -30,11 +30,11 @@
  * types, removing or reassigning enums, adding/removing/rearranging
  * fields to structures
  */
-#define AOM_IMAGE_ABI_VERSION (4) /**<\hideinitializer*/
+#define AOM_IMAGE_ABI_VERSION (5) /**<\hideinitializer*/
 
-#define AOM_IMG_FMT_PLANAR 0x100       /**< Image is a planar format. */
-#define AOM_IMG_FMT_UV_FLIP 0x200      /**< V plane precedes U in memory. */
-#define AOM_IMG_FMT_HAS_ALPHA 0x400    /**< Image has an alpha channel. */
+#define AOM_IMG_FMT_PLANAR 0x100  /**< Image is a planar format. */
+#define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
+/** 0x400 used to signal alpha channel, skipping for backwards compatibility. */
 #define AOM_IMG_FMT_HIGHBITDEPTH 0x800 /**< Image uses 16bit framebuffer. */
 
 /*!\brief List of supported image formats */
@@ -48,7 +48,6 @@
   AOM_IMG_FMT_AOMI420 = AOM_IMG_FMT_PLANAR | 4,
   AOM_IMG_FMT_I422 = AOM_IMG_FMT_PLANAR | 5,
   AOM_IMG_FMT_I444 = AOM_IMG_FMT_PLANAR | 6,
-  AOM_IMG_FMT_444A = AOM_IMG_FMT_PLANAR | AOM_IMG_FMT_HAS_ALPHA | 6,
   AOM_IMG_FMT_I42016 = AOM_IMG_FMT_I420 | AOM_IMG_FMT_HIGHBITDEPTH,
   AOM_IMG_FMT_YV1216 = AOM_IMG_FMT_YV12 | AOM_IMG_FMT_HIGHBITDEPTH,
   AOM_IMG_FMT_I42216 = AOM_IMG_FMT_I422 | AOM_IMG_FMT_HIGHBITDEPTH,
@@ -170,9 +169,8 @@
 #define AOM_PLANE_Y 0       /**< Y (Luminance) plane */
 #define AOM_PLANE_U 1       /**< U (Chroma) plane */
 #define AOM_PLANE_V 2       /**< V (Chroma) plane */
-#define AOM_PLANE_ALPHA 3   /**< A (Transparency) plane */
-  unsigned char *planes[4]; /**< pointer to the top left pixel for each plane */
-  int stride[4];            /**< stride between rows for each plane */
+  unsigned char *planes[3]; /**< pointer to the top left pixel for each plane */
+  int stride[3];            /**< stride between rows for each plane */
   size_t sz;                /**< data size */
 
   int bps; /**< bits per sample (for packed formats) */
diff --git a/aom/src/aom_image.c b/aom/src/aom_image.c
index 82a267c..521eade 100644
--- a/aom/src/aom_image.c
+++ b/aom/src/aom_image.c
@@ -134,7 +134,7 @@
   img->bps = bps;
 
   /* Calculate strides */
-  img->stride[AOM_PLANE_Y] = img->stride[AOM_PLANE_ALPHA] = stride_in_bytes;
+  img->stride[AOM_PLANE_Y] = stride_in_bytes;
   img->stride[AOM_PLANE_U] = img->stride[AOM_PLANE_V] = stride_in_bytes >> xcs;
 
   /* Default viewport to entire image */
@@ -188,12 +188,6 @@
           (img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) ? 2 : 1;
       data = img->img_data;
 
-      if (img->fmt & AOM_IMG_FMT_HAS_ALPHA) {
-        img->planes[AOM_PLANE_ALPHA] =
-            data + x * bytes_per_sample + y * img->stride[AOM_PLANE_ALPHA];
-        data += (img->h + 2 * border) * img->stride[AOM_PLANE_ALPHA];
-      }
-
       img->planes[AOM_PLANE_Y] =
           data + x * bytes_per_sample + y * img->stride[AOM_PLANE_Y];
       data += (img->h + 2 * border) * img->stride[AOM_PLANE_Y];
@@ -239,10 +233,6 @@
   img->planes[AOM_PLANE_V] += (signed)((img->d_h >> img->y_chroma_shift) - 1) *
                               img->stride[AOM_PLANE_V];
   img->stride[AOM_PLANE_V] = -img->stride[AOM_PLANE_V];
-
-  img->planes[AOM_PLANE_ALPHA] +=
-      (signed)(img->d_h - 1) * img->stride[AOM_PLANE_ALPHA];
-  img->stride[AOM_PLANE_ALPHA] = -img->stride[AOM_PLANE_ALPHA];
 }
 
 void aom_img_free(aom_image_t *img) {
diff --git a/aom_scale/yv12config.h b/aom_scale/yv12config.h
index 2fb81ac..10c6ad5 100644
--- a/aom_scale/yv12config.h
+++ b/aom_scale/yv12config.h
@@ -39,17 +39,15 @@
     struct {
       int y_width;
       int uv_width;
-      int alpha_width;
     };
-    int widths[3];
+    int widths[2];
   };
   union {
     struct {
       int y_height;
       int uv_height;
-      int alpha_height;
     };
-    int heights[3];
+    int heights[2];
   };
   union {
     struct {
@@ -69,18 +67,16 @@
     struct {
       int y_stride;
       int uv_stride;
-      int alpha_stride;
     };
-    int strides[3];
+    int strides[2];
   };
   union {
     struct {
       uint8_t *y_buffer;
       uint8_t *u_buffer;
       uint8_t *v_buffer;
-      uint8_t *alpha_buffer;
     };
-    uint8_t *buffers[4];
+    uint8_t *buffers[3];
   };
 
   // Indicate whether y_buffer, u_buffer, and v_buffer points to the internally
diff --git a/av1/av1_iface_common.h b/av1/av1_iface_common.h
index 4a7af58..32a207d 100644
--- a/av1/av1_iface_common.h
+++ b/av1/av1_iface_common.h
@@ -52,11 +52,9 @@
   img->planes[AOM_PLANE_Y] = yv12->y_buffer;
   img->planes[AOM_PLANE_U] = yv12->u_buffer;
   img->planes[AOM_PLANE_V] = yv12->v_buffer;
-  img->planes[AOM_PLANE_ALPHA] = NULL;
   img->stride[AOM_PLANE_Y] = yv12->y_stride;
   img->stride[AOM_PLANE_U] = yv12->uv_stride;
   img->stride[AOM_PLANE_V] = yv12->uv_stride;
-  img->stride[AOM_PLANE_ALPHA] = yv12->y_stride;
   if (yv12->flags & YV12_FLAG_HIGHBITDEPTH) {
     // aom_image_t uses byte strides and a pointer to the first byte
     // of the image.
@@ -65,11 +63,9 @@
     img->planes[AOM_PLANE_Y] = (uint8_t *)CONVERT_TO_SHORTPTR(yv12->y_buffer);
     img->planes[AOM_PLANE_U] = (uint8_t *)CONVERT_TO_SHORTPTR(yv12->u_buffer);
     img->planes[AOM_PLANE_V] = (uint8_t *)CONVERT_TO_SHORTPTR(yv12->v_buffer);
-    img->planes[AOM_PLANE_ALPHA] = NULL;
     img->stride[AOM_PLANE_Y] = 2 * yv12->y_stride;
     img->stride[AOM_PLANE_U] = 2 * yv12->uv_stride;
     img->stride[AOM_PLANE_V] = 2 * yv12->uv_stride;
-    img->stride[AOM_PLANE_ALPHA] = 2 * yv12->y_stride;
   }
   img->bps = bps;
   img->user_priv = user_priv;
diff --git a/common/y4menc.c b/common/y4menc.c
index de8eca2..c539b5b 100644
--- a/common/y4menc.c
+++ b/common/y4menc.c
@@ -30,7 +30,6 @@
 // image format.
 const char *colorspace8(aom_chroma_sample_position_t csp, aom_img_fmt_t fmt) {
   switch (fmt) {
-    case AOM_IMG_FMT_444A: return "C444alpha";
     case AOM_IMG_FMT_I444: return "C444";
     case AOM_IMG_FMT_I422: return "C422";
     default:
diff --git a/common/y4minput.c b/common/y4minput.c
index 4e1581c..5338370 100644
--- a/common/y4minput.c
+++ b/common/y4minput.c
@@ -1047,14 +1047,8 @@
       _y4m->aux_buf_sz = _y4m->aux_buf_read_sz = 3 * _y4m->pic_w * _y4m->pic_h;
       _y4m->convert = y4m_convert_444_420jpeg;
     } else {
-      _y4m->aom_fmt = AOM_IMG_FMT_444A;
-      _y4m->bps = 32;
-      _y4m->dst_c_dec_h = _y4m->src_c_dec_h;
-      _y4m->dst_c_dec_v = _y4m->src_c_dec_v;
-      _y4m->dst_buf_read_sz = 4 * _y4m->pic_w * _y4m->pic_h;
-      /*Natively supported: no conversion required.*/
-      _y4m->aux_buf_sz = _y4m->aux_buf_read_sz = 0;
-      _y4m->convert = y4m_convert_null;
+      fprintf(stderr, "Unsupported format: 444A\n");
+      return -1;
     }
   } else if (strcmp(_y4m->chroma_type, "mono") == 0) {
     _y4m->src_c_dec_h = _y4m->src_c_dec_v = 0;
@@ -1141,12 +1135,10 @@
   c_w *= bytes_per_sample;
   c_h = (_y4m->pic_h + _y4m->dst_c_dec_v - 1) / _y4m->dst_c_dec_v;
   c_sz = c_w * c_h;
-  _img->stride[AOM_PLANE_Y] = _img->stride[AOM_PLANE_ALPHA] =
-      _y4m->pic_w * bytes_per_sample;
+  _img->stride[AOM_PLANE_Y] = _y4m->pic_w * bytes_per_sample;
   _img->stride[AOM_PLANE_U] = _img->stride[AOM_PLANE_V] = c_w;
   _img->planes[AOM_PLANE_Y] = _y4m->dst_buf;
   _img->planes[AOM_PLANE_U] = _y4m->dst_buf + pic_sz;
   _img->planes[AOM_PLANE_V] = _y4m->dst_buf + pic_sz + c_sz;
-  _img->planes[AOM_PLANE_ALPHA] = _y4m->dst_buf + pic_sz + 2 * c_sz;
   return 1;
 }
