diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index ee8ba12..f393728 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2435,7 +2435,7 @@
   for (int i = 0; i < 2; ++i) {
     if (x->tmp_obmc_bufs[i] == NULL) {
       CHECK_MEM_ERROR(cm, x->tmp_obmc_bufs[i],
-                      aom_memalign(16, 2 * MAX_MB_PLANE * MAX_SB_SQUARE *
+                      aom_memalign(32, 2 * MAX_MB_PLANE * MAX_SB_SQUARE *
                                            sizeof(*x->tmp_obmc_bufs[i])));
       x->e_mbd.tmp_obmc_bufs[i] = x->tmp_obmc_bufs[i];
     }
@@ -3043,6 +3043,7 @@
       aom_free(thread_data->td->above_pred_buf);
       aom_free(thread_data->td->left_pred_buf);
       aom_free(thread_data->td->wsrc_buf);
+
 #if CONFIG_COLLECT_INTER_MODE_RD_STATS
       aom_free(thread_data->td->inter_modes_info);
 #endif
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index 13f5b8a..96afa36 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -416,7 +416,7 @@
       for (int j = 0; j < 2; ++j) {
         CHECK_MEM_ERROR(
             cm, thread_data->td->tmp_obmc_bufs[j],
-            aom_memalign(16, 2 * MAX_MB_PLANE * MAX_SB_SQUARE *
+            aom_memalign(32, 2 * MAX_MB_PLANE * MAX_SB_SQUARE *
                                  sizeof(*thread_data->td->tmp_obmc_bufs[j])));
       }
 
@@ -494,6 +494,7 @@
       thread_data->td->mb.above_pred_buf = thread_data->td->above_pred_buf;
       thread_data->td->mb.left_pred_buf = thread_data->td->left_pred_buf;
       thread_data->td->mb.wsrc_buf = thread_data->td->wsrc_buf;
+
 #if CONFIG_COLLECT_INTER_MODE_RD_STATS
       thread_data->td->mb.inter_modes_info = thread_data->td->inter_modes_info;
 #endif
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 812438c..44ac7be 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -11573,13 +11573,7 @@
   int reach_first_comp_mode = 0;
 
   // Temporary buffers used by handle_inter_mode().
-  // We allocate them once and reuse it in every call to that function.
-  // Note: Must be allocated on the heap due to large size of the arrays.
-  uint8_t *tmp_buf_orig;
-  CHECK_MEM_ERROR(
-      cm, tmp_buf_orig,
-      (uint8_t *)aom_memalign(32, 2 * MAX_MB_PLANE * MAX_SB_SQUARE));
-  uint8_t *const tmp_buf = get_buf_by_bd(xd, tmp_buf_orig);
+  uint8_t *const tmp_buf = get_buf_by_bd(xd, x->tmp_obmc_bufs[0]);
 
   CompoundTypeRdBuffers rd_buffers;
   alloc_compound_type_rd_buffers(cm, &rd_buffers);
@@ -11836,8 +11830,6 @@
     if (x->skip && !comp_pred) break;
   }
 
-  aom_free(tmp_buf_orig);
-  tmp_buf_orig = NULL;
   release_compound_type_rd_buffers(&rd_buffers);
 
 #if CONFIG_COLLECT_INTER_MODE_RD_STATS
