diff --git a/src/screen.c b/src/screen.c
index 933326f..fe33685 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2501,6 +2501,11 @@
     int		syntax_attr = 0;	/* attributes desired by syntax */
     int		has_syntax = FALSE;	/* this buffer has syntax highl. */
     int		save_did_emsg;
+    int		has_spell = FALSE;	/* this buffer has spell checking */
+    int		spell_attr = 0;		/* attributes desired by spelling */
+    int		word_end = 0;		/* last byte with same spell_attr */
+    int		iswordc;		/* prev. char was a word character */
+    int		prev_iswordc = FALSE;	/* prev. char was a word character */
 #endif
     int		extra_check;		/* has syntax or linebreak */
 #ifdef FEAT_MBYTE
@@ -2597,6 +2602,13 @@
 	    extra_check = TRUE;
 	}
     }
+
+    if (wp->w_p_spell && *wp->w_buffer->b_p_spl != NUL)
+    {
+	/* Prepare for spell checking. */
+	has_spell = TRUE;
+	extra_check = TRUE;
+    }
 #endif
 
     /*
@@ -3231,6 +3243,11 @@
 	    else
 		char_attr = search_attr;
 
+#ifdef FEAT_SYN_HL
+	    if (spell_attr != 0)
+		char_attr = hl_combine_attr(char_attr, spell_attr);
+#endif
+
 #ifdef FEAT_DIFF
 	    if (diff_hlf != (enum hlf_value)0 && n_extra == 0)
 	    {
@@ -3539,16 +3556,20 @@
 	    if (extra_check)
 	    {
 #ifdef FEAT_SYN_HL
+		int	can_spell = TRUE;
+
 		/* Get syntax attribute, unless still at the start of the line
 		 * (double-wide char that doesn't fit). */
-		if (has_syntax && (v = (long)(ptr - line)) > 0)
+		v = (long)(ptr - line);
+		if (has_syntax && v > 0)
 		{
 		    /* Get the syntax attribute for the character.  If there
 		     * is an error, disable syntax highlighting. */
 		    save_did_emsg = did_emsg;
 		    did_emsg = FALSE;
 
-		    syntax_attr = get_syntax_attr((colnr_T)v - 1);
+		    syntax_attr = get_syntax_attr((colnr_T)v - 1,
+					       has_spell ? &can_spell : NULL);
 
 		    if (did_emsg)
 			syntax_clear(wp->w_buffer);
@@ -3563,10 +3584,51 @@
 		    if (area_attr == 0 && search_attr == 0)
 			char_attr = syntax_attr;
 		}
+
+		/* Check spelling at the start of a word.
+		 * Only do this when there is no syntax highlighting, there is
+		 * on @Spell cluster or the current syntax item contains the
+		 * @Spell cluster. */
+		if (has_spell && v >= word_end)
+		{
+		    if (!has_syntax || can_spell)
+		    {
+			char_u	*prev_ptr = ptr - (
+# ifdef FEAT_MBYTE
+							has_mbyte ? mb_l :
+# endif
+									    1);
+
+			spell_attr = 0;
+			iswordc = vim_iswordc_buf(prev_ptr, wp->w_buffer);
+			if (iswordc && !prev_iswordc)
+			{
+			    word_end = v + spell_check(wp, prev_ptr,
+								 &spell_attr);
+			    /* In Insert mode only highlight a word that
+			     * doesn't touch the cursor. */
+			    if (spell_attr != 0
+				    && (State & INSERT) != 0
+				    && wp->w_cursor.lnum == lnum
+				    && wp->w_cursor.col >=
+						    (colnr_T)(prev_ptr - line)
+				    && wp->w_cursor.col < (colnr_T)word_end)
+			    {
+				spell_attr = 0;
+				spell_redraw_lnum = lnum;
+			    }
+			}
+			prev_iswordc = iswordc;
+		    }
+		    else
+			spell_attr = 0;
+		}
+		if (spell_attr != 0)
+		    char_attr = hl_combine_attr(char_attr, spell_attr);
 #endif
 #ifdef FEAT_LINEBREAK
 		/*
-		 * Found last space before word: check for line break
+		 * Found last space before word: check for line break.
 		 */
 		if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr)
 						      && !wp->w_p_list)
