diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 83c4960..f8d479a 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -413,6 +413,7 @@
   int must_find_valid_partition;
   int recalc_luma_mc_data;  // Flag to indicate recalculation of MC data during
                             // interpolation filter search
+  int use_transform_domain_distortion;
   // The likelihood of an edge existing in the block (using partial Canny edge
   // detection). For reference, 556 is the value returned for a solid
   // vertical black/white edge.
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 885d3a7..d005a16 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -3146,7 +3146,7 @@
   // Tranform domain distortion is accurate for higher residuals.
   // TODO(any): Experiment with variance and mean based thresholds
   int use_transform_domain_distortion =
-      (cpi->sf.use_transform_domain_distortion > 0) &&
+      (x->use_transform_domain_distortion > 0) &&
       (block_mse_q8 >= cpi->tx_domain_dist_threshold) &&
       // Any 64-pt transforms only preserves half the coefficients.
       // Therefore transform domain distortion is not valid for these
@@ -3156,7 +3156,7 @@
   if (x->using_dist_8x8) use_transform_domain_distortion = 0;
 #endif
   int calc_pixel_domain_distortion_final =
-      cpi->sf.use_transform_domain_distortion == 1 &&
+      x->use_transform_domain_distortion == 1 &&
       use_transform_domain_distortion && x->rd_model != LOW_TXFM_RD;
   if (calc_pixel_domain_distortion_final &&
       (txk_allowed < TX_TYPES || allowed_tx_mask == 0x0001))
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index 099855c..5c34e69 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -250,6 +250,21 @@
   x->tx_mode = select_tx_mode(cpi, x->tx_size_search_method);
 }
 
+static INLINE void set_tx_domain_dist_type(
+    const struct AV1_COMP *cpi, MACROBLOCK *x,
+    int enable_winner_mode_for_tx_domain_dist, int is_winner_mode) {
+  if (!enable_winner_mode_for_tx_domain_dist) {
+    x->use_transform_domain_distortion =
+        cpi->sf.use_transform_domain_distortion;
+    return;
+  }
+
+  if (is_winner_mode)
+    x->use_transform_domain_distortion = 0;
+  else
+    x->use_transform_domain_distortion = 2;
+}
+
 // Checks the conditions to enable winner mode processing
 static INLINE int is_winner_mode_processing_enabled(
     const struct AV1_COMP *cpi, MB_MODE_INFO *const mbmi,
@@ -288,6 +303,8 @@
     case DEFAULT_EVAL:
       x->use_default_inter_tx_type = 0;
       x->use_default_intra_tx_type = 0;
+      // Set default transform domain distortion type
+      set_tx_domain_dist_type(cpi, x, 0, 0);
 
       // Get default threshold for R-D optimization of coefficients
       x->coeff_opt_dist_threshold =
@@ -302,6 +319,10 @@
       x->use_default_inter_tx_type =
           cpi->sf.tx_type_search.fast_inter_tx_type_search;
 
+      // Set transform domain distortion type for mode evaluation
+      set_tx_domain_dist_type(cpi, x,
+                              sf->enable_winner_mode_for_use_tx_domain_dist, 0);
+
       // Get threshold for R-D optimization of coefficients during mode
       // evaluation
       x->coeff_opt_dist_threshold =
@@ -315,6 +336,10 @@
       x->use_default_inter_tx_type = 0;
       x->use_default_intra_tx_type = 0;
 
+      // Set transform domain distortion type for winner mode evaluation
+      set_tx_domain_dist_type(cpi, x,
+                              sf->enable_winner_mode_for_use_tx_domain_dist, 1);
+
       // Get threshold for R-D optimization of coefficients for winner mode
       // evaluation
       x->coeff_opt_dist_threshold =
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 7eddc50..29d87b7 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -377,6 +377,8 @@
     // TODO(any): Experiment with this speed feature by enabling for key frames
     sf->enable_winner_mode_for_tx_size_srch =
         frame_is_intra_only(&cpi->common) ? 0 : 1;
+    sf->enable_winner_mode_for_use_tx_domain_dist =
+        cm->allow_screen_content_tools ? 0 : 1;
     sf->reduce_wiener_window_size = is_boosted_arf2_bwd_type ? 0 : 1;
     sf->mv.subpel_search_method = SUBPEL_TREE_PRUNED;
     sf->simple_motion_search_prune_agg = 1;
@@ -858,6 +860,7 @@
   sf->perform_coeff_opt = 0;
   sf->enable_winner_mode_for_coeff_opt = 0;
   sf->enable_winner_mode_for_tx_size_srch = 0;
+  sf->enable_winner_mode_for_use_tx_domain_dist = 0;
   sf->prune_comp_type_by_model_rd = 0;
   sf->disable_smooth_intra = 0;
   sf->perform_best_rd_based_gating_for_chroma = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 008bc61..1338cf9 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -681,6 +681,10 @@
   // search method
   int enable_winner_mode_for_tx_size_srch;
 
+  // Flag used to control the winner mode processing for use transform
+  // domain distortion
+  int enable_winner_mode_for_use_tx_domain_dist;
+
   // Flag used to control the speed of the eob selection in trellis.
   int trellis_eob_fast;
 
