diff --git a/src/edit.c b/src/edit.c
index b31177c..f399f30 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -4810,7 +4810,7 @@
 {
     pos_T	tpos = curwin->w_cursor;
 
-    spell_bad_len = spell_move_to(BACKWARD, TRUE, TRUE);
+    spell_bad_len = spell_move_to(curwin, BACKWARD, TRUE, TRUE, NULL);
     if (curwin->w_cursor.col != tpos.col)
 	start_arrow(&tpos);
 }
diff --git a/src/eval.c b/src/eval.c
index c934553..0190071 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -13756,7 +13756,7 @@
 
 #ifdef FEAT_SYN_HL
     /* Find the start and length of the badly spelled word. */
-    len = spell_move_to(FORWARD, TRUE, TRUE);
+    len = spell_move_to(curwin, FORWARD, TRUE, TRUE, NULL);
     if (len != 0)
 	rettv->vval.v_string = vim_strnsave(ml_get_cursor(), len);
 #endif
@@ -14208,7 +14208,7 @@
 
     if (!transerr && lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
 	    && col >= 0 && col < (long)STRLEN(ml_get(lnum)))
-	id = syn_get_id(lnum, (colnr_T)col, trans, NULL);
+	id = syn_get_id(curwin, lnum, (colnr_T)col, trans, NULL);
 #endif
 
     rettv->vval.v_number = id;
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 77ee4b5..5cfeb8b 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -876,7 +876,7 @@
 	 */
 	if (psettings->do_syntax)
 	{
-	    id = syn_get_id(ppos->file_line, col, 1, NULL);
+	    id = syn_get_id(curwin, ppos->file_line, col, 1, NULL);
 	    if (id > 0)
 		id = syn_get_final_id(id);
 	    else
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 3c4c798..2adc137 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -1,6 +1,6 @@
 /* spell.c */
 int spell_check __ARGS((win_T *wp, char_u *ptr, int *attrp, int *capcol));
-int spell_move_to __ARGS((int dir, int allwords, int curline));
+int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, int *attrp));
 void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
 char_u *did_set_spelllang __ARGS((buf_T *buf));
 void spell_free_all __ARGS((void));
@@ -17,6 +17,7 @@
 void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap));
 char_u *eval_soundfold __ARGS((char_u *word));
 void ex_spelldump __ARGS((exarg_T *eap));
+char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
 int spell_word_start __ARGS((int startcol));
 int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
 /* vim: set ft=c : */
diff --git a/src/screen.c b/src/screen.c
index b3dbe01..ba345ae 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2916,6 +2916,31 @@
 	if (wp->w_p_wrap)
 	    need_showbreak = TRUE;
 #endif
+#ifdef FEAT_SYN_HL
+	/* When spell checking a word we need to figure out the start of the
+	 * word and if it's badly spelled or not. */
+	if (has_spell)
+	{
+	    int		len;
+
+	    pos = wp->w_cursor;
+	    wp->w_cursor.lnum = lnum;
+	    wp->w_cursor.col = ptr - line;
+	    len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_attr);
+	    if (len == 0 || wp->w_cursor.col > ptr - line)
+	    {
+		/* no bad word found at line start, don't check until end of a
+		 * word */
+		spell_attr = 0;
+		word_end = spell_to_word_end(ptr, wp->w_buffer) - line + 1;
+	    }
+	    else
+		/* bad word found, use attributes until end of word */
+		word_end = wp->w_cursor.col + len + 1;
+
+	    wp->w_cursor = pos;
+	}
+#endif
     }
 
     /*
diff --git a/src/syntax.c b/src/syntax.c
index aa393d7..65a7926 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -5992,7 +5992,8 @@
  * Function called for expression evaluation: get syntax ID at file position.
  */
     int
-syn_get_id(lnum, col, trans, spellp)
+syn_get_id(wp, lnum, col, trans, spellp)
+    win_T	*wp;
     long	lnum;
     colnr_T	col;
     int		trans;	    /* remove transparancy */
@@ -6000,10 +6001,10 @@
 {
     /* When the position is not after the current position and in the same
      * line of the same buffer, need to restart parsing. */
-    if (curwin->w_buffer != syn_buf
+    if (wp->w_buffer != syn_buf
 	    || lnum != current_lnum
 	    || col < current_col)
-	syntax_start(curwin, lnum);
+	syntax_start(wp, lnum);
 
     (void)get_syntax_attr(col, spellp);
 
diff --git a/src/version.h b/src/version.h
index f1ce02b..13e4071 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 25)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 25, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 26)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 26, compiled "
