diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c
index 7d56023..f25c7a6 100644
--- a/av1/encoder/encode_strategy.c
+++ b/av1/encoder/encode_strategy.c
@@ -853,18 +853,10 @@
                  ref_map_index);
       break;
     case OVERLAY_UPDATE:
-      if (cpi->preserve_arf_as_gld || cm->show_existing_frame) {
-        ref_map_index = stack_pop(ref_buffer_stack->arf_stack,
-                                  &ref_buffer_stack->arf_stack_size);
-        stack_push(ref_buffer_stack->gld_stack,
-                   &ref_buffer_stack->gld_stack_size, ref_map_index);
-      } else {
-        stack_pop(ref_buffer_stack->arf_stack,
-                  &ref_buffer_stack->arf_stack_size);
-        update_arf_stack(cpi, ref_map_index, ref_buffer_stack);
-        stack_push(ref_buffer_stack->gld_stack,
-                   &ref_buffer_stack->gld_stack_size, ref_map_index);
-      }
+      ref_map_index = stack_pop(ref_buffer_stack->arf_stack,
+                                &ref_buffer_stack->arf_stack_size);
+      stack_push(ref_buffer_stack->gld_stack, &ref_buffer_stack->gld_stack_size,
+                 ref_map_index);
       break;
     case INTNL_OVERLAY_UPDATE:
       ref_map_index = stack_pop(ref_buffer_stack->arf_stack,
@@ -1052,11 +1044,9 @@
       refresh_mask |= cpi->ext_refresh_alt2_ref_frame << ref_frame_map_idx;
 
     if (frame_update_type == OVERLAY_UPDATE) {
-      if (!cpi->preserve_arf_as_gld) {
-        ref_frame_map_idx = get_ref_frame_map_idx(cm, ALTREF_FRAME);
-        if (ref_frame_map_idx != INVALID_IDX)
-          refresh_mask |= cpi->ext_refresh_golden_frame << ref_frame_map_idx;
-      }
+      ref_frame_map_idx = get_ref_frame_map_idx(cm, ALTREF_FRAME);
+      if (ref_frame_map_idx != INVALID_IDX)
+        refresh_mask |= cpi->ext_refresh_golden_frame << ref_frame_map_idx;
     } else {
       ref_frame_map_idx = get_ref_frame_map_idx(cm, GOLDEN_FRAME);
       if (ref_frame_map_idx != INVALID_IDX)
@@ -1127,21 +1117,7 @@
                      ->lst_stack[ref_buffer_stack->lst_stack_size - 1];
       }
       break;
-    case OVERLAY_UPDATE:
-      if (!cpi->preserve_arf_as_gld) {
-        if (free_fb_index != INVALID_IDX) {
-          refresh_mask = 1 << free_fb_index;
-        } else if (ref_buffer_stack->arf_stack_size) {
-          refresh_mask =
-              1 << ref_buffer_stack
-                       ->arf_stack[ref_buffer_stack->arf_stack_size - 1];
-        } else {
-          refresh_mask =
-              1 << ref_buffer_stack
-                       ->lst_stack[ref_buffer_stack->lst_stack_size - 1];
-        }
-      }
-      break;
+    case OVERLAY_UPDATE: break;
     case INTNL_OVERLAY_UPDATE: break;
     default: assert(0); break;
   }
@@ -1173,14 +1149,7 @@
       refresh_mask |= 1 << get_ref_frame_map_idx(cm, LAST3_FRAME);
       refresh_mask |= 1 << get_ref_frame_map_idx(cm, GOLDEN_FRAME);
       break;
-    case OVERLAY_UPDATE:
-      if (!cpi->preserve_arf_as_gld) {
-        // The result of our OVERLAY should become the GOLDEN_FRAME but we'd
-        // like to keep the old GOLDEN as our new ALTREF.  So we refresh the
-        // ALTREF and swap around the ALTREF and GOLDEN references.
-        refresh_mask |= 1 << get_ref_frame_map_idx(cm, ALTREF_FRAME);
-      }
-      break;
+    case OVERLAY_UPDATE: break;
     case ARF_UPDATE:
       refresh_mask |= 1 << get_ref_frame_map_idx(cm, ALTREF_FRAME);
       break;
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 92fed66..6426bb9 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -1008,7 +1008,6 @@
   // Stores the default value of skip flag depending on chroma format
   // Set as 1 for monochrome and 3 for other color formats
   int default_interp_skip_flags;
-  int preserve_arf_as_gld;
   MultiThreadHandle multi_thread_ctxt;
   void (*row_mt_sync_read_ptr)(AV1RowMTSync *const, int, int);
   void (*row_mt_sync_write_ptr)(AV1RowMTSync *const, int, int, const int);
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c
index 51700a5..47a1f23 100644
--- a/av1/encoder/pass2_strategy.c
+++ b/av1/encoder/pass2_strategy.c
@@ -799,7 +799,6 @@
       !(cpi->lookahead->sz < rc->baseline_gf_interval - 1) &&
       (cpi->oxcf.gf_max_pyr_height > MIN_PYRAMID_LVL);
   rc->source_alt_ref_pending = use_alt_ref;
-  cpi->preserve_arf_as_gld = use_alt_ref;
 
   // Set up the structure of this Group-Of-Pictures (same as GF_GROUP)
   av1_gop_setup_structure(cpi, frame_params);
@@ -1134,13 +1133,9 @@
     rc->gfu_boost =
         calc_arf_boost(cpi, alt_offset, (i - 1), (i - 1), &f_boost, &b_boost);
     rc->source_alt_ref_pending = 1;
-
-    // do not replace ARFs with overlay frames, and keep it as GOLDEN_REF
-    cpi->preserve_arf_as_gld = 1;
   } else {
     rc->gfu_boost = AOMMAX((int)boost_score, MIN_ARF_GF_BOOST);
     rc->source_alt_ref_pending = 0;
-    cpi->preserve_arf_as_gld = 0;
   }
 
   // Set the interval until the next gf.
