diff --git a/src/diff.c b/src/diff.c
index 7210ce2..0db2820 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1447,18 +1447,14 @@
 	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)
     {
 	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",
+    set_string_option_direct_in_win(wp, (char_u *)"fdm", -1, (char_u *)"diff",
 						       OPT_LOCAL|OPT_FREE, 0);
-    curwin = old_curwin;
-    curbuf = curwin->w_buffer;
     if (!wp->w_p_diff)
     {
 	wp->w_p_fdc_save = wp->w_p_fdc;
diff --git a/src/option.c b/src/option.c
index 9b23eed..6bc1499 100644
--- a/src/option.c
+++ b/src/option.c
@@ -5954,6 +5954,54 @@
 }
 
 /*
+ * Like set_string_option_direct(), but for a window-local option in "wp".
+ * Blocks autocommands to avoid the old curwin becoming invalid.
+ */
+    void
+set_string_option_direct_in_win(
+	win_T		*wp,
+	char_u		*name,
+	int		opt_idx,
+	char_u		*val,
+	int		opt_flags,
+	int		set_sid)
+{
+    win_T	*save_curwin = curwin;
+
+    block_autocmds();
+    curwin = wp;
+    curbuf = curwin->w_buffer;
+    set_string_option_direct(name, opt_idx, val, opt_flags, set_sid);
+    curwin = save_curwin;
+    curbuf = curwin->w_buffer;
+    unblock_autocmds();
+}
+
+/*
+ * Like set_string_option_direct(), but for a buffer-local option in "buf".
+ * Blocks autocommands to avoid the old curbuf becoming invalid.
+ */
+    void
+set_string_option_direct_in_buf(
+	buf_T		*buf,
+	char_u		*name,
+	int		opt_idx,
+	char_u		*val,
+	int		opt_flags,
+	int		set_sid)
+{
+    buf_T	*save_curbuf = curbuf;
+
+    block_autocmds();
+    curbuf = buf;
+    curwin->w_buffer = curbuf;
+    set_string_option_direct(name, opt_idx, val, opt_flags, set_sid);
+    curbuf = save_curbuf;
+    curwin->w_buffer = curbuf;
+    unblock_autocmds();
+}
+
+/*
  * Set global value for string option when it's a local option.
  */
     static void
diff --git a/src/popupwin.c b/src/popupwin.c
index 116efcb..e39ee67 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -23,6 +23,7 @@
 apply_options(win_T *wp, buf_T *buf UNUSED, dict_T *dict)
 {
     int	    nr;
+    char_u  *str;
 
     wp->w_maxwidth = dict_get_number(dict, (char_u *)"maxwidth");
     wp->w_maxheight = dict_get_number(dict, (char_u *)"maxheight");
@@ -52,6 +53,10 @@
     }
 #endif
 
+    str = dict_get_string(dict, (char_u *)"highlight", TRUE);
+    if (str != NULL)
+	set_string_option_direct_in_win(wp, (char_u *)"wincolor", -1,
+						   str, OPT_FREE|OPT_LOCAL, 0);
 }
 
 /*
@@ -94,12 +99,10 @@
     if (buf == NULL)
 	return;
     ml_open(buf);
-    curbuf = buf;
-    set_string_option_direct((char_u *)"buftype", -1,
+    set_string_option_direct_in_buf(buf, (char_u *)"buftype", -1,
 				     (char_u *)"popup", OPT_FREE|OPT_LOCAL, 0);
-    set_string_option_direct((char_u *)"bufhidden", -1,
+    set_string_option_direct_in_buf(buf, (char_u *)"bufhidden", -1,
 				     (char_u *)"hide", OPT_FREE|OPT_LOCAL, 0);
-    curbuf = curwin->w_buffer;
     buf->b_p_ul = -1;	    // no undo
     buf->b_p_swf = FALSE;   // no swap file
     buf->b_p_bl = FALSE;    // unlisted buffer
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 15aa010..4a0da1c 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -21,6 +21,8 @@
 int set_term_option_alloced(char_u **p);
 int was_set_insecurely(char_u *opt, int opt_flags);
 void set_string_option_direct(char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid);
+void set_string_option_direct_in_win(win_T *wp, char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid);
+void set_string_option_direct_in_buf(buf_T *buf, char_u *name, int opt_idx, char_u *val, int opt_flags, int set_sid);
 int valid_spellang(char_u *val);
 char *check_colorcolumn(win_T *wp);
 char *check_stl_option(char_u *s);
diff --git a/src/testdir/dumps/Test_popupwin_01.dump b/src/testdir/dumps/Test_popupwin_01.dump
index b3818c1..2a444ca 100644
--- a/src/testdir/dumps/Test_popupwin_01.dump
+++ b/src/testdir/dumps/Test_popupwin_01.dump
@@ -1,8 +1,8 @@
 >1+0&#ffffff0| @73
 |2| @73
-|3| @8|h+0&#5fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0#0000001#ffd7ff255| |o|n|e| @8| +0#0000000#ffffff0@30
-|4| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|w|o| @8| +0#0000000#ffffff0@30
-|5| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0#0000000#ffffff0@30
+|3| @8|h+0&#5fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0&#afffff255| |o|n|e| @8| +0&#ffffff0@30
+|4| @22|a+0&#afffff255|n|o|t|h|e|r| |t|w|o| @8| +0&#ffffff0@30
+|5| @22|a+0&#afffff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0&#ffffff0@30
 |6| @73
 |7| @73
 |8| @73
diff --git a/src/testdir/dumps/Test_popupwin_03.dump b/src/testdir/dumps/Test_popupwin_03.dump
index 7436a01..4f6f9dd 100644
--- a/src/testdir/dumps/Test_popupwin_03.dump
+++ b/src/testdir/dumps/Test_popupwin_03.dump
@@ -1,8 +1,8 @@
 | +2&#ffffff0|+| |[|N|o| |N|a|m|e|]| | +8#0000001#e0e0e08|[|N|o| |N|a|m|e|]| | +1#0000000#ffffff0@49|X+8#0000001#e0e0e08
 >1+0#0000000#ffffff0| @73
-|2| @8|h+0&#5fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0#0000001#ffd7ff255| |o|n|e| @8| +0#0000000#ffffff0@30
-|3| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|w|o| @8| +0#0000000#ffffff0@30
-|4| @22|a+0#0000001#ffd7ff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0#0000000#ffffff0@30
+|2| @8|h+0&#5fd7ff255|e|l@1|o| |t|h|e|r|e| @8|r+0&#afffff255| |o|n|e| @8| +0&#ffffff0@30
+|3| @22|a+0&#afffff255|n|o|t|h|e|r| |t|w|o| @8| +0&#ffffff0@30
+|4| @22|a+0&#afffff255|n|o|t|h|e|r| |t|h|r|e@1| @6| +0&#ffffff0@30
 |5| @73
 |6| @73
 |7| @73
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index b6b8a9e..04c67a2 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -12,10 +12,11 @@
   endif
   call writefile([
 	\ "call setline(1, range(1, 100))",
-	\ "let winid = popup_create('hello there', {'line': 3, 'col': 11})",
-	\ "hi PopupColor ctermbg=lightblue",
-	\ "call setwinvar(winid, '&wincolor', 'PopupColor')",
+	\ "hi PopupColor1 ctermbg=lightblue",
+	\ "hi PopupColor2 ctermbg=lightcyan",
+	\ "let winid = popup_create('hello there', {'line': 3, 'col': 11, 'highlight': 'PopupColor1'})",
 	\ "let winid2 = popup_create(['another one', 'another two', 'another three'], {'line': 3, 'col': 25})",
+	\ "call setwinvar(winid2, '&wincolor', 'PopupColor2')",
 	\], 'XtestPopup')
   let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10})
   call VerifyScreenDump(buf, 'Test_popupwin_01', {})
diff --git a/src/version.c b/src/version.c
index 2b869f0..04de1af 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1405,
+/**/
     1404,
 /**/
     1403,
