diff --git a/av1/common/dering.c b/av1/common/dering.c
index 2b99ac8..bb7f565 100644
--- a/av1/common/dering.c
+++ b/av1/common/dering.c
@@ -171,7 +171,7 @@
   curr_row_dering = prev_row_dering + nhsb + 2;
   for (pli = 0; pli < nplanes; pli++) {
     dec[pli] = xd->plane[pli].subsampling_x;
-    bsize[pli] = 3 - dec[pli];
+    bsize[pli] = OD_DERING_SIZE_LOG2 - dec[pli];
   }
   stride = (cm->mi_cols << bsize[0]) + 2*OD_FILT_HBORDER;
   for (pli = 0; pli < nplanes; pli++) {
@@ -207,7 +207,7 @@
       }
       curr_row_dering[sbc] = 1;
       for (pli = 0; pli < nplanes; pli++) {
-        int16_t dst[MAX_MIB_SIZE * MAX_MIB_SIZE * 8 * 8];
+        int16_t dst[OD_BSIZE_MAX * OD_BSIZE_MAX];
         int threshold;
         int coffset;
         int rend, cend;
@@ -358,7 +358,7 @@
                                     (MAX_MIB_SIZE * sbr << bsize[pli]) +
                                     (sbc * MAX_MIB_SIZE << bsize[pli])],
               xd->plane[pli].dst.stride, dst, dlist,
-              dering_count, 3 - dec[pli]);
+              dering_count, bsize[pli]);
 #if CONFIG_AOM_HIGHBITDEPTH
         }
 #endif
diff --git a/av1/common/od_dering.c b/av1/common/od_dering.c
index 977faa0..454862a 100644
--- a/av1/common/od_dering.c
+++ b/av1/common/od_dering.c
@@ -311,7 +311,7 @@
   od_filter_dering_orthogonal_func filter_dering_orthogonal[OD_DERINGSIZES] = {
     od_filter_dering_orthogonal_4x4, od_filter_dering_orthogonal_8x8
   };
-  bsize = 3 - xdec;
+  bsize = OD_DERING_SIZE_LOG2 - xdec;
   if (pli == 0) {
     for (bi = 0; bi < dering_count; bi++) {
       int32_t var;
diff --git a/av1/common/od_dering.h b/av1/common/od_dering.h
index 48acf37..450f112 100644
--- a/av1/common/od_dering.h
+++ b/av1/common/od_dering.h
@@ -18,6 +18,8 @@
 
 #define OD_DERINGSIZES (2)
 
+#define OD_DERING_SIZE_LOG2 (3)
+
 #define OD_DERING_NBLOCKS (OD_BSIZE_MAX / 8)
 
 /* We need to buffer three vertical lines. */
diff --git a/av1/encoder/pickdering.c b/av1/encoder/pickdering.c
index a6b918c..c135451 100644
--- a/av1/encoder/pickdering.c
+++ b/av1/encoder/pickdering.c
@@ -58,7 +58,7 @@
   av1_setup_dst_planes(xd->plane, frame, 0, 0);
   for (pli = 0; pli < 3; pli++) {
     dec[pli] = xd->plane[pli].subsampling_x;
-    bsize[pli] = 3 - dec[pli];
+    bsize[pli] = OD_DERING_SIZE_LOG2 - dec[pli];
   }
   stride = cm->mi_cols << bsize[0];
   for (r = 0; r < cm->mi_rows << bsize[0]; ++r) {
@@ -139,7 +139,7 @@
         od_dering(tmp_dst, in, 0, dir, 0, dlist, dering_count, threshold,
             coeff_shift);
         copy_dering_16bit_to_16bit(dst, MAX_MIB_SIZE << bsize[0], tmp_dst, dlist,
-            dering_count, 3);
+            dering_count, bsize[0]);
         cur_mse = (int)compute_dist(
             dst, MAX_MIB_SIZE << bsize[0],
             &ref_coeff[(sbr * stride * MAX_MIB_SIZE << bsize[0]) +
