diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index cf81ca6..21d1f60 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -543,8 +543,7 @@
     for (c = 0; c < bw; ++c, base += base_inc) {
       if (base < max_base_x) {
         val = above[base] * (32 - shift) + above[base + 1] * shift;
-        val = ROUND_POWER_OF_TWO(val, 5);
-        dst[c] = clip_pixel(val);
+        dst[c] = ROUND_POWER_OF_TWO(val, 5);
       } else {
         dst[c] = above[max_base_x];
       }
@@ -582,7 +581,7 @@
         val = left[base2] * (32 - shift2) + left[base2 + 1] * shift2;
         val = ROUND_POWER_OF_TWO(val, 5);
       }
-      dst[c] = clip_pixel(val);
+      dst[c] = val;
     }
   }
 }
@@ -610,8 +609,7 @@
     for (r = 0; r < bh; ++r, base += base_inc) {
       if (base < max_base_y) {
         val = left[base] * (32 - shift) + left[base + 1] * shift;
-        val = ROUND_POWER_OF_TWO(val, 5);
-        dst[r * stride + c] = clip_pixel(val);
+        dst[r * stride + c] = val = ROUND_POWER_OF_TWO(val, 5);
       } else {
         for (; r < bh; ++r) dst[r * stride + c] = left[max_base_y];
         break;
@@ -654,6 +652,7 @@
 
   (void)left;
   (void)dy;
+  (void)bd;
   assert(dy == 1);
   assert(dx > 0);
 
@@ -676,8 +675,7 @@
     for (c = 0; c < bw; ++c, base += base_inc) {
       if (base < max_base_x) {
         val = above[base] * (32 - shift) + above[base + 1] * shift;
-        val = ROUND_POWER_OF_TWO(val, 5);
-        dst[c] = clip_pixel_highbd(val, bd);
+        dst[c] = ROUND_POWER_OF_TWO(val, 5);
       } else {
         dst[c] = above[max_base_x];
       }
@@ -692,6 +690,7 @@
                                    int upsample_left, int dx, int dy, int bd) {
   int r, c, x, y, shift, val, base;
 
+  (void)bd;
   assert(dx > 0);
   assert(dy > 0);
 
@@ -715,7 +714,7 @@
         val = left[base] * (32 - shift) + left[base + 1] * shift;
         val = ROUND_POWER_OF_TWO(val, 5);
       }
-      dst[c] = clip_pixel_highbd(val, bd);
+      dst[c] = val;
     }
     dst += stride;
   }
@@ -730,6 +729,7 @@
 
   (void)above;
   (void)dx;
+  (void)bd;
   assert(dx == 1);
   assert(dy > 0);
 
@@ -744,8 +744,7 @@
     for (r = 0; r < bh; ++r, base += base_inc) {
       if (base < max_base_y) {
         val = left[base] * (32 - shift) + left[base + 1] * shift;
-        val = ROUND_POWER_OF_TWO(val, 5);
-        dst[r * stride + c] = clip_pixel_highbd(val, bd);
+        dst[r * stride + c] = ROUND_POWER_OF_TWO(val, 5);
       } else {
         for (; r < bh; ++r) dst[r * stride + c] = left[max_base_y];
         break;
