diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index d165af5..67bb3fa 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -1299,8 +1299,7 @@
                     plane,
                     tx_size, OD_PVQ_BETA[use_activity_masking][plane][tx_size],
                     OD_ROBUST_STREAM,
-                    0,        // is_keyframe,
-                    0, 0, 0,  // q_scaling, bx, by,
+                    0,  // is_keyframe,
                     daala_enc->state.qm + off, daala_enc->state.qm_inv + off,
                     speed,  // speed
                     pvq_info);
diff --git a/av1/encoder/pvq_encoder.c b/av1/encoder/pvq_encoder.c
index d9e22cd..d437a38 100644
--- a/av1/encoder/pvq_encoder.c
+++ b/av1/encoder/pvq_encoder.c
@@ -719,31 +719,6 @@
   }
 }
 
-#if OD_SIGNAL_Q_SCALING
-void od_encode_quantizer_scaling(daala_enc_ctx *enc, int q_scaling,
- int sbx, int sby, int skip) {
-  int nhsb;
-  OD_ASSERT(skip == !!skip);
-  nhsb = enc->state.nhsb;
-  OD_ASSERT(sbx < nhsb);
-  OD_ASSERT(sby < enc->state.nvsb);
-  OD_ASSERT(!skip || q_scaling == 0);
-  enc->state.sb_q_scaling[sby*nhsb + sbx] = q_scaling;
-  if (!skip) {
-    int above;
-    int left;
-    /* use value from neighbour if possible, otherwise use 0 */
-    above = sby > 0 ? enc->state.sb_q_scaling[(sby - 1)*enc->state.nhsb + sbx]
-     : 0;
-    left = sbx > 0 ? enc->state.sb_q_scaling[sby*enc->state.nhsb + (sbx - 1)]
-     : 0;
-    aom_encode_cdf_adapt(&enc->w, q_scaling,
-     enc->state.adapt.q_cdf[above + left*4], 4,
-     enc->state.adapt.q_increment);
-  }
-}
-#endif
-
 /** Encode a coefficient block (excepting DC) using PVQ
  *
  * @param [in,out] enc     daala encoder context
@@ -756,9 +731,6 @@
  * @param [in]     beta    per-band activity masking beta param
  * @param [in]     nodesync  make stream robust to error in the reference
  * @param [in]     is_keyframe whether we're encoding a keyframe
- * @param [in]     q_scaling scaling factor to apply to quantizer
- * @param [in]     bx      x-coordinate of this block
- * @param [in]     by      y-coordinate of this block
  * @param [in]     qm      QM with magnitude compensation
  * @param [in]     qm_inv  Inverse of QM with magnitude compensation
  * @param [in]     speed   Make search faster by making approximations
@@ -778,9 +750,6 @@
                    const od_val16 *beta,
                    int nodesync,
                    int is_keyframe,
-                   int q_scaling,
-                   int bx,
-                   int by,
                    const int16_t *qm,
                    const int16_t *qm_inv,
                    int speed,
@@ -811,11 +780,6 @@
   double dc_rate;
   int use_masking;
   PVQ_SKIP_TYPE ac_dc_coded;
-#if !OD_SIGNAL_Q_SCALING
-  OD_UNUSED(q_scaling);
-  OD_UNUSED(bx);
-  OD_UNUSED(by);
-#endif
 
   aom_clear_system_state();
 
@@ -923,12 +887,6 @@
   aom_encode_cdf_adapt(&enc->w, 2 + (out[0] != 0), skip_cdf,
    4, enc->state.adapt.skip_increment);
   ac_dc_coded = AC_CODED + (out[0] != 0);
-#if OD_SIGNAL_Q_SCALING
-  if (bs == OD_TXSIZES - 1 && pli == 0) {
-    od_encode_quantizer_scaling(enc, q_scaling, bx >> (OD_TXSIZES - 1),
-     by >> (OD_TXSIZES - 1), 0);
-  }
-#endif
   cfl_encoded = 0;
   skip_rest = 1;
   skip_theta_value = is_keyframe ? -1 : 0;
@@ -1033,17 +991,6 @@
     aom_encode_cdf_adapt(&enc->w, out[0] != 0, skip_cdf,
      4, enc->state.adapt.skip_increment);
     ac_dc_coded = (out[0] != 0);
-#if OD_SIGNAL_Q_SCALING
-    if (bs == OD_TXSIZES - 1 && pli == 0) {
-      int skip;
-      skip = out[0] == 0;
-      if (skip) {
-        q_scaling = 0;
-      }
-      od_encode_quantizer_scaling(enc, q_scaling, bx >> (OD_TXSIZES - 1),
-       by >> (OD_TXSIZES - 1), skip);
-    }
-#endif
     if (is_keyframe) for (i = 1; i < 1 << (2*bs + 4); i++) out[i] = 0;
     else for (i = 1; i < 1 << (2*bs + 4); i++) out[i] = ref[i];
   }
diff --git a/av1/encoder/pvq_encoder.h b/av1/encoder/pvq_encoder.h
index 7492287..b2b65f9 100644
--- a/av1/encoder/pvq_encoder.h
+++ b/av1/encoder/pvq_encoder.h
@@ -19,20 +19,11 @@
 # include "av1/common/pvq.h"
 # include "av1/encoder/encint.h"
 
-#ifndef OD_SIGNAL_Q_SCALING
-# define OD_SIGNAL_Q_SCALING (0)
-#endif
-
 void aom_encode_band_pvq_splits(aom_writer *w, od_pvq_codeword_ctx *adapt,
  const int *y, int n, int k, int level);
 
 void aom_laplace_encode_special(aom_writer *w, int x, unsigned decay, int max);
 
-#if OD_SIGNAL_Q_SCALING
-void od_encode_quantizer_scaling(daala_enc_ctx *enc, int q_scaling, int bx,
- int by, int skip);
-#endif
-
 void pvq_encode_partition(aom_writer *w,
                                  int qg,
                                  int theta,
@@ -54,8 +45,8 @@
 
 PVQ_SKIP_TYPE od_pvq_encode(daala_enc_ctx *enc, od_coeff *ref,
     const od_coeff *in, od_coeff *out, int q_dc, int q_ac, int pli, int bs,
-    const od_val16 *beta, int nodesync, int is_keyframe, int q_scaling, int bx,
-    int by, const int16_t *qm, const int16_t *qm_inv, int speed,
+    const od_val16 *beta, int nodesync, int is_keyframe,
+    const int16_t *qm, const int16_t *qm_inv, int speed,
     PVQ_INFO *pvq_info);
 
 #endif
