diff --git a/src/gui_x11.c b/src/gui_x11.c
index 2cc0eba..2226e89 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -1992,14 +1992,40 @@
 #if defined(FEAT_EVAL) || defined(PROTO)
 /*
  * Return the name of font "font" in allocated memory.
- * Don't know how to get the actual name, thus use the provided name.
  */
     char_u *
-gui_mch_get_fontname(GuiFont font UNUSED, char_u *name)
+gui_mch_get_fontname(GuiFont font, char_u *name)
 {
-    if (name == NULL)
-	return NULL;
-    return vim_strsave(name);
+    char_u *ret = NULL;
+
+    if (name != NULL && font == NULL)
+    {
+	/* In this case, there's no way other than doing this. */
+	ret = vim_strsave(name);
+    }
+    else if (font != NULL)
+    {
+	/* In this case, try to retrieve the XLFD corresponding to 'font'->fid;
+	 * if failed, use 'name' unless it's NULL. */
+	unsigned long value = 0L;
+
+	if (XGetFontProperty(font, XA_FONT, &value))
+	{
+	    char *xa_font_name = NULL;
+
+	    xa_font_name = XGetAtomName(gui.dpy, value);
+	    if (xa_font_name != NULL)
+	    {
+		ret = vim_strsave((char_u *)xa_font_name);
+		XFree(xa_font_name);
+	    }
+	    else if (name != NULL)
+		ret = vim_strsave(name);
+	}
+	else if (name != NULL)
+	    ret = vim_strsave(name);
+    }
+    return ret;
 }
 #endif
 
diff --git a/src/syntax.c b/src/syntax.c
index 11f679c..b13bd93 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -8169,7 +8169,7 @@
 	    || HL_TABLE()[idx].sg_gui_fg_name != NULL
 	    || HL_TABLE()[idx].sg_gui_bg_name != NULL
 	    || HL_TABLE()[idx].sg_gui_sp_name != NULL
-	    || HL_TABLE()[idx].sg_font_name != NUL
+	    || HL_TABLE()[idx].sg_font_name != NULL
 #endif
 	    || (check_link && (HL_TABLE()[idx].sg_set & SG_LINK)));
 }
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index 0e7b461..f9d21a5 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -126,7 +126,7 @@
 
 test_gui_init.res: test_gui_init.vim
 	@echo "$(VIMPROG)" > vimcmd
-	$(VIMPROG) -u NONE -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim
+	$(VIMPROG) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $*.vim
 	@del vimcmd
 
 opt_test.vim: ../option.c gen_opt_test.vim
diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak
index ad4697d..7e13c0f 100644
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -129,7 +129,7 @@
 
 test_gui_init.res: test_gui_init.vim
 	@echo "$(VIMPROG)" > vimcmd
-	$(VIMPROG) -u NONE -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
+	$(VIMPROG) -u gui_preinit_vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
 	@$(DEL) vimcmd
 
 opt_test.vim: ../option.c gen_opt_test.vim
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index ca8597f..ce1c24c 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -138,7 +138,7 @@
 
 test_gui_init.res: test_gui_init.vim
 	@echo "$(RUN_GVIMTEST_WITH_GVIMRC)" > vimcmd
-	$(RUN_VIMTEST) -u NONE -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
+	$(RUN_VIMTEST) -u gui_preinit.vim -U gui_init.vim $(NO_PLUGINS) -S runtest.vim $<
 	@rm vimcmd
 
 opt_test.vim: ../option.c gen_opt_test.vim
diff --git a/src/testdir/gui_init.vim b/src/testdir/gui_init.vim
index bc5e33c..42b2bca 100644
--- a/src/testdir/gui_init.vim
+++ b/src/testdir/gui_init.vim
@@ -2,4 +2,5 @@
 
 if has('gui_athena') || has('gui_motif') || has('gui_gtk2') || has('gui_gtk3')
   set guiheadroom=0
+  set guioptions+=p
 endif
diff --git a/src/testdir/gui_preinit.vim b/src/testdir/gui_preinit.vim
new file mode 100644
index 0000000..c351b72
--- /dev/null
+++ b/src/testdir/gui_preinit.vim
@@ -0,0 +1,7 @@
+" vimrc for test_gui_init.vim
+
+" Note that this flag must be added in the .vimrc file, before switching on
+" syntax or filetype recognition (when the |gvimrc| file is sourced the system
+" menu has already been loaded; the ":syntax on" and ":filetype on" commands
+" load the menu too).
+set guioptions+=M
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 7d39a1d..3e06eab 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -30,6 +30,18 @@
   endif
 endfunc
 
+func Test_colorscheme()
+  let colorscheme_saved = exists('g:colors_name') ? g:colors_name : 'default'
+
+  colorscheme torte
+  redraw!
+  sleep 200m
+  call assert_equal('dark', &background)
+
+  exec 'colorscheme' colorscheme_saved
+  redraw!
+endfunc
+
 func Test_getfontname_with_arg()
   let skipped = ''
 
@@ -40,8 +52,8 @@
     call assert_equal('', getfontname('notexist'))
 
     " Valid font name. This is usually the real name of 7x13 by default.
-    let fname = '-misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1'
-    call assert_equal(fname, getfontname(fname))
+    let fname = '-Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO8859-1'
+    call assert_match(fname, getfontname(fname))
 
   elseif has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3')
     " Invalid font name. The result should be the name plus the default size.
@@ -68,8 +80,9 @@
     " 'expected' is the value specified by SetUp() above.
     call assert_equal('Courier 10 Pitch/8/-1/5/50/0/0/0/0/0', fname)
   elseif has('gui_athena') || has('gui_motif')
-    " 'expected' is DFLT_FONT of gui_x11.c.
-    call assert_equal('7x13', fname)
+    " 'expected' is DFLT_FONT of gui_x11.c or its real name.
+    let pat = '\(7x13\)\|\(\c-Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO8859-1\)'
+    call assert_match(pat, fname)
   elseif has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3')
     " 'expected' is DEFAULT_FONT of gui_gtk_x11.c.
     call assert_equal('Monospace 10', fname)
@@ -80,6 +93,12 @@
   endif
 endfunc
 
+func Test_getwinpos()
+  call assert_match('Window position: X \d\+, Y \d\+', execute('winpos'))
+  call assert_true(getwinposx() >= 0)
+  call assert_true(getwinposy() >= 0)
+endfunc
+
 func Test_quoteplus()
   let skipped = ''
 
@@ -125,6 +144,18 @@
   endif
 endfunc
 
+func Test_set_background()
+  let background_saved = &background
+
+  set background&
+  call assert_equal('light', &background)
+
+  set background=dark
+  call assert_equal('dark', &background)
+
+  let &background = background_saved
+endfunc
+
 func Test_set_balloondelay()
   if !exists('+balloondelay')
     return
@@ -248,6 +279,46 @@
   let &balloonexpr = balloonexpr_saved
 endfunc
 
+" Invalid arguments are tested with test_options in conjunction with segfaults
+" caused by them (Patch 8.0.0357, 24922ec233).
+func Test_set_guicursor()
+  let guicursor_saved = &guicursor
+
+  let default = [
+        \ "n-v-c:block-Cursor/lCursor",
+        \ "ve:ver35-Cursor",
+        \ "o:hor50-Cursor",
+        \ "i-ci:ver25-Cursor/lCursor",
+        \ "r-cr:hor20-Cursor/lCursor",
+        \ "sm:block-Cursor-blinkwait175-blinkoff150-blinkon175"
+        \ ]
+
+  " Default Value
+  set guicursor&
+  call assert_equal(join(default, ','), &guicursor)
+
+  " Argument List Example 1
+  let opt_list = copy(default)
+  let opt_list[0] = "n-c-v:block-nCursor"
+  exec "set guicursor=" . join(opt_list, ',')
+  call assert_equal(join(opt_list, ','), &guicursor)
+  unlet opt_list
+
+  " Argument List Example 2
+  let opt_list = copy(default)
+  let opt_list[3] = "i-ci:ver30-iCursor-blinkwait300-blinkon200-blinkoff150"
+  exec "set guicursor=" . join(opt_list, ',')
+  call assert_equal(join(opt_list, ','), &guicursor)
+  unlet opt_list
+
+  " 'a' Mode
+  set guicursor&
+  let &guicursor .= ',a:blinkon0'
+  call assert_equal(join(default, ',') . ",a:blinkon0", &guicursor)
+
+  let &guicursor = guicursor_saved
+endfunc
+
 func Test_set_guifont()
   let skipped = ''
 
@@ -274,11 +345,13 @@
     " Non-empty font list with a valid font name.  Should pick up the first
     " valid font.
     set guifont=-notexist1-*,fixed,-notexist2-*
-    call assert_equal('fixed', getfontname())
+    let pat = '\(fixed\)\|\(\c-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-1\)'
+    call assert_match(pat, getfontname())
 
     " Empty list. Should fallback to the built-in default.
     set guifont=
-    call assert_equal('7x13', getfontname())
+    let pat = '\(7x13\)\|\(\c-Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO8859-1\)'
+    call assert_match(pat, getfontname())
 
   elseif has('gui_gtk2') || has('gui_gnome') || has('gui_gtk3')
     " For GTK, what we refer to as 'font names' in our manual are actually
@@ -477,10 +550,120 @@
   endif
 endfunc
 
-func Test_getwinpos()
-  call assert_match('Window position: X \d\+, Y \d\+', execute('winpos'))
-  call assert_true(getwinposx() >= 0)
-  call assert_true(getwinposy() >= 0)
+func Test_set_guioptions()
+  let guioptions_saved = &guioptions
+  let duration = '200m'
+
+  if has('win32')
+    " Default Value
+    set guioptions&
+    call assert_equal('egmrLtT', &guioptions)
+
+  else
+    " Default Value
+    set guioptions&
+    call assert_equal('aegimrLtT', &guioptions)
+
+    " To activate scrollbars of type 'L' or 'R'.
+    wincmd v
+    redraw!
+
+    " Remove all default GUI ornaments
+    set guioptions-=T
+    exec 'sleep' . duration
+    call assert_equal('aegimrLt', &guioptions)
+    set guioptions-=t
+    exec 'sleep' . duration
+    call assert_equal('aegimrL', &guioptions)
+    set guioptions-=L
+    exec 'sleep' . duration
+    call assert_equal('aegimr', &guioptions)
+    set guioptions-=r
+    exec 'sleep' . duration
+    call assert_equal('aegim', &guioptions)
+    set guioptions-=m
+    exec 'sleep' . duration
+    call assert_equal('aegi', &guioptions)
+
+    " Try non-default GUI ornaments
+    set guioptions+=l
+    exec 'sleep' . duration
+    call assert_equal('aegil', &guioptions)
+    set guioptions-=l
+    exec 'sleep' . duration
+    call assert_equal('aegi', &guioptions)
+
+    set guioptions+=R
+    exec 'sleep' . duration
+    call assert_equal('aegiR', &guioptions)
+    set guioptions-=R
+    exec 'sleep' . duration
+    call assert_equal('aegi', &guioptions)
+
+    set guioptions+=b
+    exec 'sleep' . duration
+    call assert_equal('aegib', &guioptions)
+    set guioptions+=h
+    exec 'sleep' . duration
+    call assert_equal('aegibh', &guioptions)
+    set guioptions-=h
+    exec 'sleep' . duration
+    call assert_equal('aegib', &guioptions)
+    set guioptions-=b
+    exec 'sleep' . duration
+    call assert_equal('aegi', &guioptions)
+
+    set guioptions+=v
+    exec 'sleep' . duration
+    call assert_equal('aegiv', &guioptions)
+    set guioptions-=v
+    exec 'sleep' . duration
+    call assert_equal('aegi', &guioptions)
+
+    if has('gui_motif')
+      set guioptions+=F
+      exec 'sleep' . duration
+      call assert_equal('aegiF', &guioptions)
+      set guioptions-=F
+      exec 'sleep' . duration
+      call assert_equal('aegi', &guioptions)
+    endif
+
+    " Restore GUI ornaments to the default state.
+    set guioptions+=m
+    exec 'sleep' . duration
+    call assert_equal('aegim', &guioptions)
+    set guioptions+=r
+    exec 'sleep' . duration
+    call assert_equal('aegimr', &guioptions)
+    set guioptions+=L
+    exec 'sleep' . duration
+    call assert_equal('aegimrL', &guioptions)
+    set guioptions+=t
+    exec 'sleep' . duration
+    call assert_equal('aegimrLt', &guioptions)
+    set guioptions+=T
+    exec 'sleep' . duration
+    call assert_equal("aegimrLtT", &guioptions)
+
+    wincmd o
+    redraw!
+  endif
+
+  let &guioptions = guioptions_saved
+endfunc
+
+func Test_set_guipty()
+  let guipty_saved = &guipty
+
+  " Default Value
+  set guipty&
+  call assert_equal(1, &guipty)
+
+  set noguipty
+  call assert_equal(0, &guipty)
+
+  let &guipty = guipty_saved
 endfunc
 
 func Test_shell_command()
@@ -490,6 +673,19 @@
   bwipe!
 endfunc
 
+func Test_syntax_colortest()
+  runtime syntax/colortest.vim
+  redraw!
+  sleep 200m
+  bwipe!
+endfunc
+
+func Test_set_term()
+  " It's enough to check the current value since setting 'term' to anything
+  " other than builtin_gui makes no sense at all.
+  call assert_equal('builtin_gui', &term)
+endfunc
+
 func Test_windowid_variable()
   if g:x11_based_gui || has('win32')
     call assert_true(v:windowid > 0)
diff --git a/src/testdir/test_gui_init.vim b/src/testdir/test_gui_init.vim
index 811c6ec..21e5bb6 100644
--- a/src/testdir/test_gui_init.vim
+++ b/src/testdir/test_gui_init.vim
@@ -36,3 +36,25 @@
     throw skipped
   endif
 endfunc
+
+func Test_set_guioptions_for_M()
+  sleep 200ms
+  " Check if the 'M' option is included.
+  call assert_match('.*M.*', &guioptions)
+endfunc
+
+func Test_set_guioptions_for_p()
+  let skipped = ''
+
+  if !g:x11_based_gui
+    let skipped = g:not_supported . '''p'' of guioptions'
+  else
+    sleep 200ms
+    " Check if the 'p' option is included.
+    call assert_match('.*p.*', &guioptions)
+  endif
+
+  if !empty(skipped)
+    throw skipped
+  endif
+endfunc
diff --git a/src/version.c b/src/version.c
index cb416dc..caf1b64 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    447,
+/**/
     446,
 /**/
     446,
