diff --git a/src/diff.c b/src/diff.c
index aec54c2..ef59e44 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1138,32 +1138,34 @@
     curwin = old_curwin;
 # endif
 
-    wp->w_p_diff = TRUE;
-
     /* Use 'scrollbind' and 'cursorbind' when available */
 #ifdef FEAT_SCROLLBIND
-    if (!wp->w_p_diff_saved)
+    if (!wp->w_p_diff)
 	wp->w_p_scb_save = wp->w_p_scb;
     wp->w_p_scb = TRUE;
 #endif
 #ifdef FEAT_CURSORBIND
-    if (!wp->w_p_diff_saved)
+    if (!wp->w_p_diff)
 	wp->w_p_crb_save = wp->w_p_crb;
     wp->w_p_crb = TRUE;
 #endif
-    if (!wp->w_p_diff_saved)
+    if (!wp->w_p_diff)
 	wp->w_p_wrap_save = wp->w_p_wrap;
     wp->w_p_wrap = FALSE;
 # ifdef FEAT_FOLDING
     curwin = wp;
     curbuf = curwin->w_buffer;
-    if (!wp->w_p_diff_saved)
+    if (!wp->w_p_diff)
+    {
+	if (wp->w_p_diff_saved)
+	    free_string_option(wp->w_p_fdm_save);
 	wp->w_p_fdm_save = vim_strsave(wp->w_p_fdm);
+    }
     set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
 						       OPT_LOCAL|OPT_FREE, 0);
     curwin = old_curwin;
     curbuf = curwin->w_buffer;
-    if (!wp->w_p_diff_saved)
+    if (!wp->w_p_diff)
     {
 	wp->w_p_fdc_save = wp->w_p_fdc;
 	wp->w_p_fen_save = wp->w_p_fen;
@@ -1183,6 +1185,8 @@
     /* Saved the current values, to be restored in ex_diffoff(). */
     wp->w_p_diff_saved = TRUE;
 
+    wp->w_p_diff = TRUE;
+
     if (addbuf)
 	diff_buf_add(wp->w_buffer);
     redraw_win_later(wp, NOT_VALID);
@@ -1197,7 +1201,6 @@
     exarg_T	*eap;
 {
     win_T	*wp;
-    win_T	*old_curwin = curwin;
 #ifdef FEAT_SCROLLBIND
     int		diffwin = FALSE;
 #endif
@@ -1206,57 +1209,47 @@
     {
 	if (eap->forceit ? wp->w_p_diff : wp == curwin)
 	{
-	    /* Set 'diff', 'scrollbind' off and 'wrap' on. If option values
-	     * were saved in diff_win_options() restore them. */
+	    /* Set 'diff' off. If option values were saved in
+	     * diff_win_options(), restore the ones whose settings seem to have
+	     * been left over from diff mode.  */
 	    wp->w_p_diff = FALSE;
 
-#ifdef FEAT_SCROLLBIND
-	    if (wp->w_p_scb)
-		wp->w_p_scb = wp->w_p_diff_saved ? wp->w_p_scb_save : FALSE;
-#endif
-#ifdef FEAT_CURSORBIND
-	    if (wp->w_p_crb)
-		wp->w_p_crb = wp->w_p_diff_saved ? wp->w_p_crb_save : FALSE;
-#endif
-	    if (!wp->w_p_wrap)
-		wp->w_p_wrap = wp->w_p_diff_saved ? wp->w_p_wrap_save : TRUE;
-#ifdef FEAT_FOLDING
-	    curwin = wp;
-	    curbuf = curwin->w_buffer;
 	    if (wp->w_p_diff_saved)
 	    {
-		free_string_option(wp->w_p_fdm);
-		wp->w_p_fdm = wp->w_p_fdm_save;
-		wp->w_p_fdm_save = empty_option;
-	    }
-	    else
-		set_string_option_direct((char_u *)"fdm", -1,
-				   (char_u *)"manual", OPT_LOCAL|OPT_FREE, 0);
-	    curwin = old_curwin;
-	    curbuf = curwin->w_buffer;
-	    if (wp->w_p_fdc == diff_foldcolumn)
-		wp->w_p_fdc = wp->w_p_diff_saved ? wp->w_p_fdc_save : 0;
-	    if (wp->w_p_fdl == 0 && wp->w_p_diff_saved)
-		wp->w_p_fdl = wp->w_p_fdl_save;
 
-	    if (wp->w_p_fen)
-	    {
+#ifdef FEAT_SCROLLBIND
+		if (wp->w_p_scb)
+		    wp->w_p_scb = wp->w_p_scb_save;
+#endif
+#ifdef FEAT_CURSORBIND
+		if (wp->w_p_crb)
+		    wp->w_p_crb = wp->w_p_crb_save;
+#endif
+		if (!wp->w_p_wrap)
+		    wp->w_p_wrap = wp->w_p_wrap_save;
+#ifdef FEAT_FOLDING
+		free_string_option(wp->w_p_fdm);
+		wp->w_p_fdm = vim_strsave(wp->w_p_fdm_save);
+
+		if (wp->w_p_fdc == diff_foldcolumn)
+		    wp->w_p_fdc = wp->w_p_fdc_save;
+		if (wp->w_p_fdl == 0)
+		    wp->w_p_fdl = wp->w_p_fdl_save;
+
 		/* Only restore 'foldenable' when 'foldmethod' is not
 		 * "manual", otherwise we continue to show the diff folds. */
-		if (foldmethodIsManual(wp) || !wp->w_p_diff_saved)
-		    wp->w_p_fen = FALSE;
-		else
-		    wp->w_p_fen = wp->w_p_fen_save;
+		if (wp->w_p_fen)
+		    wp->w_p_fen = foldmethodIsManual(wp) ? FALSE
+							 : wp->w_p_fen_save;
+
+		foldUpdateAll(wp);
+		/* make sure topline is not halfway a fold */
+		changed_window_setting_win(wp);
+#endif
 	    }
 
-	    foldUpdateAll(wp);
-	    /* make sure topline is not halfway a fold */
-	    changed_window_setting_win(wp);
-#endif
 	    /* Note: 'sbo' is not restored, it's a global option. */
 	    diff_buf_adjust(wp);
-
-	    wp->w_p_diff_saved = FALSE;
 	}
 #ifdef FEAT_SCROLLBIND
 	diffwin |= wp->w_p_diff;
