diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index 6de130d..d1659bc 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -1512,6 +1512,14 @@
             case 2: lfm->left_v[min_tx_size].bits[index] |= mask_1; break;
             default: assert(plane >= 0 && plane <= 2); return;
           }
+          if (level == 0 && prev_level != 0) {
+            switch (plane) {
+              case 0: lfm->lfl_y_ver[tmp_row][tmp_col] = prev_level; break;
+              case 1: lfm->lfl_u[tmp_row][tmp_col] = prev_level; break;
+              case 2: lfm->lfl_v[tmp_row][tmp_col] = prev_level; break;
+              default: assert(plane >= 0 && plane <= 2); return;
+            }
+          }
         }
 
         // update prev info
@@ -1584,6 +1592,14 @@
             case 2: lfm->above_v[min_tx_size].bits[index] |= mask_1; break;
             default: assert(plane >= 0 && plane <= 2); return;
           }
+          if (level == 0 && prev_level != 0) {
+            switch (plane) {
+              case 0: lfm->lfl_y_ver[tmp_row][tmp_col] = prev_level; break;
+              case 1: lfm->lfl_u[tmp_row][tmp_col] = prev_level; break;
+              case 2: lfm->lfl_v[tmp_row][tmp_col] = prev_level; break;
+              default: assert(plane >= 0 && plane <= 2); return;
+            }
+          }
         }
 
         // update prev info
@@ -1756,10 +1772,10 @@
   uint8_t *lfl2;
 
   // filter two rows at a time
-  for (r = 0; r < cm->seq_params.mib_size &&
+  for (r = 0; r < cm->seq_params.sb_size &&
               ((mi_row + r) << MI_SIZE_LOG2 < cm->height);
        r += r_step) {
-    for (c = 0; c < cm->seq_params.mib_size &&
+    for (c = 0; c < cm->seq_params.sb_size &&
                 ((mi_col + c) << MI_SIZE_LOG2 < cm->width);
          c += MI_SIZE_64X64) {
       dst->buf += ((c << MI_SIZE_LOG2) >> ssx);
@@ -1835,10 +1851,10 @@
   uint64_t mask_4x4 = 0;
   uint8_t *lfl;
 
-  for (r = 0; r < cm->seq_params.mib_size &&
+  for (r = 0; r < cm->seq_params.sb_size &&
               ((mi_row + r) << MI_SIZE_LOG2 < cm->height);
        r += r_step) {
-    for (c = 0; c < cm->seq_params.mib_size &&
+    for (c = 0; c < cm->seq_params.sb_size &&
                 ((mi_col + c) << MI_SIZE_LOG2 < cm->width);
          c += MI_SIZE_64X64) {
       if (mi_row + r == 0) continue;
