diff --git a/vp8/encoder/picklpf.c b/vp8/encoder/picklpf.c
index a856493f590f59c83b46d8791b1f352d0b2e1f6d..54a50fb08bc67e9d80ea4866f7ec2b429525116d 100644
--- a/vp8/encoder/picklpf.c
+++ b/vp8/encoder/picklpf.c
@@ -354,6 +354,12 @@ void vp8cx_pick_filter_level_sg(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi, int segme
         if (cpi->twopass.section_intra_rating < 20)
             Bias = Bias * cpi->twopass.section_intra_rating / 20;
 
+#if CONFIG_T8X8
+        // yx, bias less for large block size
+        if(cpi->common.txfm_mode == ALLOW_8X8)
+            Bias >>= 1;
+#endif
+
         filt_high = ((filt_mid + filter_step) > max_filter_level) ? max_filter_level : (filt_mid + filter_step);
         filt_low = ((filt_mid - filter_step) < min_filter_level) ? min_filter_level : (filt_mid - filter_step);
 
@@ -572,6 +578,12 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi)
         if (cpi->twopass.section_intra_rating < 20)
             Bias = Bias * cpi->twopass.section_intra_rating / 20;
 
+#if CONFIG_T8X8
+        // yx, bias less for large block size
+        if(cpi->common.txfm_mode == ALLOW_8X8)
+            Bias >>= 1;
+#endif
+
         filt_high = ((filt_mid + filter_step) > max_filter_level) ? max_filter_level : (filt_mid + filter_step);
         filt_low = ((filt_mid - filter_step) < min_filter_level) ? min_filter_level : (filt_mid - filter_step);