diff --git a/src/rdo.rs b/src/rdo.rs
index 526506e8f8f2560f506c9b5205959ad20edb0330..f206798fdff1e5e00264fef082130398d5b9d4bb 100755
--- a/src/rdo.rs
+++ b/src/rdo.rs
@@ -217,15 +217,14 @@ pub fn rdo_mode_decision(
   for &luma_mode in &mode_set {
     assert!(fi.frame_type == FrameType::INTER || luma_mode.is_intra());
 
-    let same_as_luma_modes = &[ luma_mode ];
-    let mode_set_chroma = if is_chroma_block && luma_mode.is_intra() {
-      intra_mode_set
-    } else {
-      same_as_luma_modes
-    };
+    let mut mode_set_chroma = vec![ luma_mode ];
+
+    if is_chroma_block && luma_mode.is_intra() && luma_mode != PredictionMode::DC_PRED {
+      mode_set_chroma.push(PredictionMode::DC_PRED);
+    }
 
     // Find the best chroma prediction mode for the current luma prediction mode
-    for &chroma_mode in mode_set_chroma {
+    for &chroma_mode in &mode_set_chroma {
       for &skip in &[false, true] {
         // Don't skip when using intra modes
         if skip && luma_mode.is_intra() { continue; }