diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 3fae039..61b8df5 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -2052,6 +2052,7 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
 			width, height))) {
 	    int pref_width = xf86ModeWidth(preferred[p], r);
 	    int pref_height = xf86ModeHeight(preferred[p], r);
+	    float pref_refresh = preferred[p]->VRefresh;
 	    Bool all_match = TRUE;
 
 	    for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
@@ -2063,7 +2064,8 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
 		for (mode = output->probed_modes; mode; mode = mode->next) {
 		    Rotation r = output->initial_rotation;
 		    if (xf86ModeWidth(mode, r) == pref_width &&
-			    xf86ModeHeight(mode, r) == pref_height) {
+			xf86ModeHeight(mode, r) == pref_height &&
+			mode->VRefresh == pref_refresh) {
 			preferred[o] = mode;
 			match = TRUE;
 		    }
@@ -2406,8 +2408,9 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
 			config->output[o]->name);
 	else
 	    xf86DrvMsg (scrn->scrnIndex, X_INFO,
-			"Output %s using initial mode %s\n",
-			config->output[o]->name, modes[o]->name);
+			"Output %s using initial mode %s @ %f\n",
+			config->output[o]->name, modes[o]->name,
+			modes[o]->VRefresh);
     }
 
     /*
