diff --git a/src/screen.c b/src/screen.c
index 8044079..b92cbf9 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3057,8 +3057,8 @@
 					   wrapping */
     int		vcol_off	= 0;	/* offset for concealed characters */
     int		did_wcol	= FALSE;
-    int		match_conc	= FALSE; /* cchar for match functions */
-    int		has_match_conc  = FALSE; /* match wants to conceal */
+    int		match_conc	= 0;	/* cchar for match functions */
+    int		has_match_conc  = 0;	/* match wants to conceal */
     int		old_boguscols   = 0;
 # define VCOL_HLC (vcol - vcol_off)
 # define FIX_FOR_BOGUSCOLS \
@@ -3595,7 +3595,7 @@
     for (;;)
     {
 #ifdef FEAT_CONCEAL
-	has_match_conc = FALSE;
+	has_match_conc = 0;
 #endif
 	/* Skip this quickly when working on the text. */
 	if (draw_state != WL_LINE)
@@ -3944,11 +3944,12 @@
 			    if (cur != NULL && syn_name2id((char_u *)"Conceal")
 							       == cur->hlg_id)
 			    {
-				has_match_conc = TRUE;
+				has_match_conc =
+					     v == (long)shl->startcol ? 2 : 1;
 				match_conc = cur->conceal_char;
 			    }
 			    else
-				has_match_conc = match_conc = FALSE;
+				has_match_conc = match_conc = 0;
 #endif
 			}
 			else if (v == (long)shl->endcol)
@@ -4905,12 +4906,12 @@
 	    if (   wp->w_p_cole > 0
 		&& (wp != curwin || lnum != wp->w_cursor.lnum ||
 							conceal_cursor_line(wp) )
-		&& ( (syntax_flags & HL_CONCEAL) != 0 || has_match_conc)
+		&& ( (syntax_flags & HL_CONCEAL) != 0 || has_match_conc > 0)
 		&& !(lnum_in_visual_area
 				    && vim_strchr(wp->w_p_cocu, 'v') == NULL))
 	    {
 		char_attr = conceal_attr;
-		if (prev_syntax_id != syntax_seqnr
+		if ((prev_syntax_id != syntax_seqnr || has_match_conc > 1)
 			&& (syn_get_sub_char() != NUL || match_conc
 							 || wp->w_p_cole == 1)
 			&& wp->w_p_cole != 3)
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 2540abf..0e4ab7f 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -104,7 +104,6 @@
 	test_listlbr.out \
 	test_mapping.out \
 	test_marks.out \
-	test_match_conceal.out \
 	test_nested_function.out \
 	test_options.out \
 	test_ruby.out \
@@ -164,7 +163,7 @@
 
 
 # Tests using runtest.vim.vim.
-# Keep test_alot.res as the last one, sort the others.
+# Keep test_alot*.res as the last one, sort the others.
 NEW_TESTS = test_arglist.res \
 	    test_assert.res \
 	    test_backspace_opt.res \
@@ -175,6 +174,7 @@
 	    test_increment.res \
 	    test_json.res \
 	    test_langmap.res \
+	    test_matchadd_conceal.res \
 	    test_packadd.res \
 	    test_perl.res \
 	    test_quickfix.res \
diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim
index e55555e..8824ee5 100644
--- a/src/testdir/test_alot_utf8.vim
+++ b/src/testdir/test_alot_utf8.vim
@@ -5,4 +5,5 @@
 " files, so that they can be run by themselves.
 
 source test_expr_utf8.vim
+source test_matchadd_conceal_utf8.vim
 source test_regexp_utf8.vim
diff --git a/src/testdir/test_match_conceal.in b/src/testdir/test_match_conceal.in
deleted file mode 100644
index aa32b85..0000000
--- a/src/testdir/test_match_conceal.in
+++ /dev/null
@@ -1,159 +0,0 @@
-Test for matchadd() and conceal feature
-
-STARTTEST
-:so small.vim
-:if !has("conceal") | e! test.ok | w! test.out | qa! | endif
-:set term=ansi
-:so mbyte.vim
-:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
-:10new|:vsp|:vert resize 20
-:put =\"\#\ This\ is\ a\ Test\"
-:norm! mazt
-:fu! ScreenChar(width, lines)
-:	let c=''
-:	for j in range(1,a:lines)
-:	    for i in range(1,a:width)
-:	    	let c.=nr2char(screenchar(j, i))
-:	    endfor
-:           let c.="\n"
-:	endfor
-:	return c
-:endfu
-:fu! ScreenAttr(line, pos, eval)
-:       let g:attr=[]
-:       for col in a:pos
-:	    call add(g:attr, screenattr(a:line,col))
-:	endfor
-:	" In case all values are zero, probably the terminal
-:       " isn't set correctly, so catch that case
-:	let null = (eval(join(g:attr, '+')) == 0)
-:       let str=substitute(a:eval, '\d\+', 'g:attr[&]', 'g')
-:	if null || eval(str)
-:	    :let g:attr_test="OK: ". str
-:	else
-:	    :let g:attr_test="FAILED: ".str
-:	    :let g:attr_test.="\n". join(g:attr, ' ')
-:	    :let g:attr_test.="\n TERM: ". &term
-:	endif
-:endfu
-:fu! DoRecordScreen()
-:	wincmd l
-:	$put =printf(\"\n%s\", g:test)
-:	$put =g:line
-:       $put =g:attr_test
-:	wincmd p
-:endfu
-:let g:test ="Test 1: simple addmatch()"
-:call matchadd('Conceal', '\%2l ')
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 2: simple addmatch() and conceal (should be: #XThisXisXaXTest)"
-:norm! 'azt
-:call clearmatches()
-:syntax on
-:set concealcursor=n conceallevel=1
-:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'})
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 3: addmatch() and conceallevel=3 (should be: #ThisisaTest)"
-:norm! 'azt
-:set conceallevel=3
-:call clearmatches()
-:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'})
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 1==2 && 1==3 && 1==4 && 0!=5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 4: more match() (should be: #Thisisa Test)"
-:norm! 'azt
-:call matchadd('ErrorMsg', '\%2l Test', 20, -1, {'conceal': 'X'})
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 1==2 && 0!=3 && 3==4 && 0!=5 && 3!=5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 5/1: default conceal char (should be: # This is a Test)"
-:norm! 'azt
-:call clearmatches()
-:set conceallevel=1
-:call matchadd('Conceal', '\%2l ', 10, -1, {})
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:let g:test ="Test 5/2: default conceal char (should be: #+This+is+a+Test)"
-:norm! 'azt
-:set listchars=conceal:+
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:set listchars&vim
-:
-:let g:test ="Test 6/1: syn and match conceal (should be: #ZThisZisZaZTest)"
-:norm! 'azt
-:call clearmatches()
-:set conceallevel=1
-:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
-:syn match MyConceal /\%2l / conceal containedin=ALL cchar=*
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:let g:test ="Test 6/2: syn and match conceal (should be: #*This*is*a*Test)"
-:norm! 'azt
-:call clearmatches()
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 7/1: clear matches"
-:norm! 'azt
-:syn on
-:call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
-:let a=getmatches()
-:call clearmatches()
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0==1 && 0==2 && 0==3 && 0==4 && 0==5")
-:call DoRecordScreen()
-:$put =a
-:call setmatches(a)
-:norm! 'azt
-:let g:test ="Test 7/2: reset match using setmatches()"
-:norm! 'azt
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:
-:let g:test ="Test 8: using matchaddpos() (should be #Pis a Test"
-:norm! 'azt
-:call clearmatches()
-:call matchaddpos('Conceal', [[2,2,6]], 10, -1, {'conceal': 'P'})
-:let a=getmatches()
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1!=2 && 0==2 && 0==3 && 0!=4 && 0!=5 && 4==5")
-:call DoRecordScreen()
-:$put =a
-:
-:let g:test ="Test 9: match using multibyte conceal char (should be: #ˑThisˑisˑaˑTest)"
-:norm! 'azt
-:call clearmatches()
-:call matchadd('Conceal', '\%2l ', 20, -1, {'conceal': "\u02d1"})
-:redraw!
-:let line=ScreenChar(winwidth(0),1)
-:call ScreenAttr(1,[1,2,7,10,12,16], "0!=1 && 1==2 && 1==3 && 1==4 && 0==5")
-:call DoRecordScreen()
-:
-:"sleep 10
-:%w! test.out
-:qa!
-ENDTEST
-dummy text
diff --git a/src/testdir/test_match_conceal.ok b/src/testdir/test_match_conceal.ok
deleted file mode 100644
index 11c379e..0000000
--- a/src/testdir/test_match_conceal.ok
+++ /dev/null
@@ -1,52 +0,0 @@
-
-# This is a Test
-
-Test 1: simple addmatch()
-# This is a Test    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 2: simple addmatch() and conceal (should be: #XThisXisXaXTest)
-#XThisXisXaXTest    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 3: addmatch() and conceallevel=3 (should be: #ThisisaTest)
-#ThisisaTest        
-OK: g:attr[0]==g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]!=g:attr[5]
-
-Test 4: more match() (should be: #Thisisa Test)
-#Thisisa Test       
-OK: g:attr[0]==g:attr[1] && g:attr[1]==g:attr[2] && g:attr[0]!=g:attr[3] && g:attr[3]==g:attr[4] && g:attr[0]!=g:attr[5] && g:attr[3]!=g:attr[5]
-
-Test 5/1: default conceal char (should be: # This is a Test)
-# This is a Test    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 5/2: default conceal char (should be: #+This+is+a+Test)
-#+This+is+a+Test    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 6/1: syn and match conceal (should be: #ZThisZisZaZTest)
-#ZThisZisZaZTest    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 6/2: syn and match conceal (should be: #*This*is*a*Test)
-#*This*is*a*Test    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 7/1: clear matches
-# This is a Test    
-OK: g:attr[0]==g:attr[1] && g:attr[0]==g:attr[2] && g:attr[0]==g:attr[3] && g:attr[0]==g:attr[4] && g:attr[0]==g:attr[5]
-{'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': 10, 'conceal': 'Z'}
-
-Test 7/2: reset match using setmatches()
-#ZThisZisZaZTest    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
-
-Test 8: using matchaddpos() (should be #Pis a Test
-#Pis a Test         
-OK: g:attr[0]!=g:attr[1] && g:attr[1]!=g:attr[2] && g:attr[0]==g:attr[2] && g:attr[0]==g:attr[3] && g:attr[0]!=g:attr[4] && g:attr[0]!=g:attr[5] && g:attr[4]==g:attr[5]
-{'group': 'Conceal', 'id': 11, 'priority': 10, 'pos1': [2, 2, 6], 'conceal': 'P'}
-
-Test 9: match using multibyte conceal char (should be: #ˑThisˑisˑaˑTest)
-#ˑThisˑisˑaˑTest    
-OK: g:attr[0]!=g:attr[1] && g:attr[1]==g:attr[2] && g:attr[1]==g:attr[3] && g:attr[1]==g:attr[4] && g:attr[0]==g:attr[5]
diff --git a/src/testdir/test_matchadd_conceal.vim b/src/testdir/test_matchadd_conceal.vim
new file mode 100644
index 0000000..5da2816
--- /dev/null
+++ b/src/testdir/test_matchadd_conceal.vim
@@ -0,0 +1,266 @@
+" Test for matchadd() and conceal feature
+if !has('conceal')
+  finish
+endif
+
+if !has('gui_running') && has('unix')
+  set term=ansi
+endif
+
+function! s:screenline(lnum) abort
+  let line = []
+  for c in range(1, winwidth(0))
+    call add(line, nr2char(screenchar(a:lnum, c)))
+  endfor
+  return s:trim(join(line, ''))
+endfunction
+
+function! s:trim(str) abort
+  return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$')
+endfunction
+
+function! Test_simple_matchadd()
+  new
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '# This is a Test'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ')
+  redraw!
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  quit!
+endfunction
+
+function! Test_simple_matchadd_and_conceal()
+  new
+  setlocal concealcursor=n conceallevel=1
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '#XThisXisXaXTest'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'})
+  redraw!
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  quit!
+endfunction
+
+function! Test_matchadd_and_conceallevel_3()
+  new
+
+  setlocal conceallevel=3
+  " set filetype and :syntax on to change screenattr()
+  setlocal filetype=conf
+  syntax on
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '#ThisisaTest'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'X'})
+  redraw!
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  " more matchadd()
+  "             1234567890123456
+  let expect = '#Thisisa Test'
+
+  call matchadd('ErrorMsg', '\%2l Test', 20, -1, {'conceal': 'X'})
+  redraw!
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_equal(screenattr(lnum, 1) , screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2) , screenattr(lnum, 7))
+  call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 10), screenattr(lnum, 12))
+  call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 16))
+  call assert_notequal(screenattr(lnum, 10), screenattr(lnum, 16))
+
+  syntax off
+  quit!
+endfunction
+
+function! Test_default_conceal_char()
+  new
+  setlocal concealcursor=n conceallevel=1
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '# This is a Test'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 10, -1, {})
+  redraw!
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  "             1234567890123456
+  let expect = '#+This+is+a+Test'
+  let listchars_save = &listchars
+  set listchars=conceal:+
+  redraw!
+
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  let &listchars = listchars_save
+  quit!
+endfunction
+
+function! Test_syn_and_match_conceal()
+  new
+  setlocal concealcursor=n conceallevel=1
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '#ZThisZisZaZTest'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
+  syntax match MyConceal /\%2l / conceal containedin=ALL cchar=*
+  redraw!
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  "             1234567890123456
+  let expect = '#*This*is*a*Test'
+  call clearmatches()
+  redraw!
+
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  syntax off
+  quit!
+endfunction
+
+function! Test_clearmatches()
+  new
+  setlocal concealcursor=n conceallevel=1
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '# This is a Test'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 10, -1, {'conceal': 'Z'})
+  let a = getmatches()
+  call clearmatches()
+  redraw!
+
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  " reset match using setmatches()
+  "             1234567890123456
+  let expect = '#ZThisZisZaZTest'
+  call setmatches(a)
+  redraw!
+
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+  call assert_equal({'group': 'Conceal', 'pattern': '\%2l ', 'priority': 10, 'id': a[0].id, 'conceal': 'Z'}, a[0])
+
+  quit!
+endfunction
+
+function! Test_using_matchaddpos()
+  new
+  setlocal concealcursor=n conceallevel=1
+  " set filetype and :syntax on to change screenattr()
+  setlocal filetype=conf
+  syntax on
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '#Pis a Test'
+
+  call cursor(1, 1)
+  call matchaddpos('Conceal', [[2,2,6]], 10, -1, {'conceal': 'P'})
+  let a = getmatches()
+  redraw!
+
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 2))
+  call assert_notequal(screenattr(lnum, 2) , screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 1) , screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 1) , screenattr(lnum, 10))
+  call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 12))
+  call assert_notequal(screenattr(lnum, 1) , screenattr(lnum, 16))
+  call assert_equal(screenattr(lnum, 12), screenattr(lnum, 16))
+  call assert_equal({'group': 'Conceal', 'id': a[0].id, 'priority': 10, 'pos1': [2, 2, 6], 'conceal': 'P'}, a[0])
+
+  syntax off
+  quit!
+endfunction
+
+function! Test_matchadd_repeat_conceal_with_syntax_off()
+  new
+
+  " To test targets in the same line string is replaced with conceal char
+  " correctly, repeat 'TARGET'
+  1put ='TARGET_TARGETTARGET'
+  call cursor(1, 1)
+  redraw
+  call assert_equal('TARGET_TARGETTARGET', s:screenline(2))
+
+  setlocal conceallevel=2
+  call matchadd('Conceal', 'TARGET', 10, -1, {'conceal': 't'})
+
+  redraw
+  call assert_equal('t_tt', s:screenline(2))
+
+  quit!
+endfunction
diff --git a/src/testdir/test_matchadd_conceal_utf8.vim b/src/testdir/test_matchadd_conceal_utf8.vim
new file mode 100644
index 0000000..8293fbe
--- /dev/null
+++ b/src/testdir/test_matchadd_conceal_utf8.vim
@@ -0,0 +1,45 @@
+" Test for matchadd() and conceal feature using utf-8.
+if !has('conceal') || !has('multi_byte')
+  finish
+endif
+set encoding=utf-8
+scriptencoding utf-8
+
+if !has('gui_running') && has('unix')
+  set term=ansi
+endif
+
+function! s:screenline(lnum) abort
+  let line = []
+  for c in range(1, winwidth(0))
+    call add(line, nr2char(screenchar(a:lnum, c)))
+  endfor
+  return s:trim(join(line, ''))
+endfunction
+
+function! s:trim(str) abort
+  return matchstr(a:str,'^\s*\zs.\{-}\ze\s*$')
+endfunction
+
+function! Test_match_using_multibyte_conceal_char()
+  new
+  setlocal concealcursor=n conceallevel=1
+
+  1put='# This is a Test'
+  "             1234567890123456
+  let expect = '#ˑThisˑisˑaˑTest'
+
+  call cursor(1, 1)
+  call matchadd('Conceal', '\%2l ', 20, -1, {'conceal': "\u02d1"})
+  redraw!
+
+  let lnum = 2
+  call assert_equal(expect, s:screenline(lnum))
+  call assert_notequal(screenattr(lnum, 1), screenattr(lnum, 2))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 7))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 10))
+  call assert_equal(screenattr(lnum, 2), screenattr(lnum, 12))
+  call assert_equal(screenattr(lnum, 1), screenattr(lnum, 16))
+
+  quit!
+endfunction
diff --git a/src/testdir/test_undolevels.vim b/src/testdir/test_undolevels.vim
index 7bb25ef..b96b693 100644
--- a/src/testdir/test_undolevels.vim
+++ b/src/testdir/test_undolevels.vim
@@ -41,4 +41,8 @@
   call assert_equal(50, &g:undolevels)
   call assert_equal(-123456, &l:undolevels)
 
+  " Drop created windows
+  set ul&
+  new
+  only!
 endfunc
diff --git a/src/version.c b/src/version.c
index 6bdb861..755cf65 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1740,
+/**/
     1739,
 /**/
     1738,
