diff --git a/src/drawline.c b/src/drawline.c
index 112dc64..9368095 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -3225,7 +3225,7 @@
 
 			// Make sure, the highlighting for the tab char will be
 			// correctly set further below (effectively reverts the
-			// FIX_FOR_BOGSUCOLS macro).
+			// FIX_FOR_BOGUSCOLS macro).
 			if (wlv.n_extra == tab_len + vc_saved && wp->w_p_list
 						&& wp->w_lcs_chars.tab1)
 			    tab_len += vc_saved;
@@ -3494,6 +3494,21 @@
 		    else
 			c = ' ';
 
+		    if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
+			// When the first char to be concealed is double-width,
+			// need to advance one more virtual column.
+			wlv.n_extra++;
+
+		    mb_c = c;
+		    if (enc_utf8 && utf_char2len(c) > 1)
+		    {
+			mb_utf8 = TRUE;
+			u8cc[0] = 0;
+			c = 0xc0;
+		    }
+		    else
+			mb_utf8 = FALSE;	// don't draw as UTF-8
+
 		    prev_syntax_id = syntax_seqnr;
 
 		    if (wlv.n_extra > 0)
@@ -3522,15 +3537,6 @@
 		    is_concealing = TRUE;
 		    skip_cells = 1;
 		}
-		mb_c = c;
-		if (enc_utf8 && utf_char2len(c) > 1)
-		{
-		    mb_utf8 = TRUE;
-		    u8cc[0] = 0;
-		    c = 0xc0;
-		}
-		else
-		    mb_utf8 = FALSE;	// don't draw as UTF-8
 	    }
 	    else
 	    {
@@ -3990,10 +3996,21 @@
 #ifdef FEAT_CONCEAL
 	else if (wp->w_p_cole > 0 && is_concealing)
 	{
+	    int concealed_wide = has_mbyte && (*mb_char2cells)(mb_c) > 1;
+
 	    --skip_cells;
 	    ++wlv.vcol_off_co;
+	    if (concealed_wide)
+	    {
+		// When a double-width char is concealed,
+		// need to advance one more virtual column.
+		++wlv.vcol;
+		++wlv.vcol_off_co;
+	    }
+
 	    if (wlv.n_extra > 0)
 		wlv.vcol_off_co += wlv.n_extra;
+
 	    if (wp->w_p_wrap)
 	    {
 		// Special voodoo required if 'wrap' is on.
@@ -4026,8 +4043,7 @@
 		    n_attr = 0;
 		}
 
-
-		if (has_mbyte && (*mb_char2cells)(mb_c) > 1)
+		if (concealed_wide)
 		{
 		    // Need to fill two screen columns.
 # ifdef FEAT_RIGHTLEFT
diff --git a/src/testdir/dumps/Test_conceal_double_width_1.dump b/src/testdir/dumps/Test_conceal_double_width_1.dump
new file mode 100644
index 0000000..57353bb
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_1.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@4|β+0#e0e0e08#6c6c6c255|b+0#0000000#ffffff0@4|β+0#e0e0e08#6c6c6c255|c+0#0000000#ffffff0@3>c| @11| +0&#ffd7d7255| +0&#ffffff0@44
+|f|o@1|b|a|r| @22| +0&#ffd7d7255| +0&#ffffff0@44
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|,|2|9|-|2|5| @6|A|l@1| 
diff --git a/src/testdir/dumps/Test_conceal_double_width_2.dump b/src/testdir/dumps/Test_conceal_double_width_2.dump
new file mode 100644
index 0000000..782db47
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_2.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@4|β+0#e0e0e08#6c6c6c255|b+0#0000000#ffffff0@1>b@2|β+0#e0e0e08#6c6c6c255|c+0#0000000#ffffff0@4| @11| +0&#ffd7d7255| +0&#ffffff0@44
+|f|o@1|b|a|r| @22| +0&#ffd7d7255| +0&#ffffff0@44
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|,|1|5|-|1|3| @6|A|l@1| 
diff --git a/src/testdir/dumps/Test_conceal_double_width_3.dump b/src/testdir/dumps/Test_conceal_double_width_3.dump
new file mode 100644
index 0000000..5102c7b
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_3.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@4|b@1>b@2|c@4| @13| +0&#ffd7d7255| +0&#ffffff0@44
+|f|o@1|b|a|r| @22| +0&#ffd7d7255| +0&#ffffff0@44
+|~+0#4040ff13&| @73
+|:+0#0000000&|s|e|t| |c|o|n|c|e|a|l@1|e|v|e|l|=|3| @37|1|,|1|5|-|1|3| @6|A|l@1| 
diff --git a/src/testdir/dumps/Test_conceal_double_width_4.dump b/src/testdir/dumps/Test_conceal_double_width_4.dump
new file mode 100644
index 0000000..8ef8b96
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_4.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@4|b@4|c@3>c| @13| +0&#ffd7d7255| +0&#ffffff0@44
+|f|o@1|b|a|r| @22| +0&#ffd7d7255| +0&#ffffff0@44
+|~+0#4040ff13&| @73
+|:+0#0000000&|s|e|t| |c|o|n|c|e|a|l@1|e|v|e|l|=|3| @37|1|,|2|9|-|2|5| @6|A|l@1| 
diff --git a/src/testdir/dumps/Test_conceal_double_width_wrap_1.dump b/src/testdir/dumps/Test_conceal_double_width_wrap_1.dump
new file mode 100644
index 0000000..e794b7c
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_wrap_1.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@9|β+0#e0e0e08#6c6c6c255|b+0#0000000#ffffff0@4| @3
+|b@4|β+0#e0e0e08#6c6c6c255|c+0#0000000#ffffff0@8>c| @3
+|~+0#4040ff13&| @18
+| +0#0000000&@9|1|,|4@1|-|4|0| @2
diff --git a/src/testdir/dumps/Test_conceal_double_width_wrap_2.dump b/src/testdir/dumps/Test_conceal_double_width_wrap_2.dump
new file mode 100644
index 0000000..36e64fc
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_wrap_2.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@9|β+0#e0e0e08#6c6c6c255|b+0#0000000#ffffff0@4| @3
+>b@4|β+0#e0e0e08#6c6c6c255|c+0#0000000#ffffff0@9| @3
+|~+0#4040ff13&| @18
+| +0#0000000&@9|1|,|2|3|-|2|1| @2
diff --git a/src/testdir/dumps/Test_conceal_double_width_wrap_3.dump b/src/testdir/dumps/Test_conceal_double_width_wrap_3.dump
new file mode 100644
index 0000000..ba6c835
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_wrap_3.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@9|b@4| @4
+>b@4|c@9| @4
+|~+0#4040ff13&| @18
+|:+0#0000000&|s|e|t| |c|o|n|c|e|1|,|2|3|-|2|1| @2
diff --git a/src/testdir/dumps/Test_conceal_double_width_wrap_4.dump b/src/testdir/dumps/Test_conceal_double_width_wrap_4.dump
new file mode 100644
index 0000000..8997e98
--- /dev/null
+++ b/src/testdir/dumps/Test_conceal_double_width_wrap_4.dump
@@ -0,0 +1,4 @@
+|a+0&#ffffff0@9|b@4| @4
+|b@4|c@8>c| @4
+|~+0#4040ff13&| @18
+|:+0#0000000&| @8|1|,|4@1|-|4|0| @2
diff --git a/src/testdir/test_conceal.vim b/src/testdir/test_conceal.vim
index 7080fdd..1cc08fc 100644
--- a/src/testdir/test_conceal.vim
+++ b/src/testdir/test_conceal.vim
@@ -441,7 +441,7 @@
   call test_setmouse(1, 19)
   call feedkeys("\<LeftMouse>", "tx")
   call assert_equal([0, 1, 23, 0, 23], getcurpos())
-  " click after end of line puts cursor there without 'virtualedit'
+  " click after end of line puts cursor there with 'virtualedit'
   call test_setmouse(1, 20)
   call feedkeys("\<LeftMouse>", "tx")
   call assert_equal([0, 1, 24, 0, 24], getcurpos())
@@ -464,10 +464,9 @@
 
 " Test that cursor is drawn at the correct column when it is after end of the
 " line with 'virtualedit' and concealing.
-func Test_conceal_virtualedit_after_eol()
-  CheckScreendump
-
-  let code =<< trim [CODE]
+func Run_test_conceal_virtualedit_after_eol(wrap)
+  let code =<< trim eval [CODE]
+    let &wrap = {a:wrap}
     call setline(1, 'abcdefgh|hidden|ijklmnpop')
     syntax match test /|hidden|/ conceal
     set conceallevel=2 concealcursor=n virtualedit=all
@@ -489,12 +488,17 @@
   call StopVimInTerminal(buf)
 endfunc
 
-" Same as Test_conceal_virtualedit_after_eol(), but with 'rightleft' set.
-func Test_conceal_virtualedit_after_eol_rightleft()
-  CheckFeature rightleft
+func Test_conceal_virtualedit_after_eol()
   CheckScreendump
 
-  let code =<< trim [CODE]
+  call Run_test_conceal_virtualedit_after_eol(1)
+  call Run_test_conceal_virtualedit_after_eol(0)
+endfunc
+
+" Same as Run_test_conceal_virtualedit_after_eol(), but with 'rightleft'.
+func Run_test_conceal_virtualedit_after_eol_rightleft(wrap)
+  let code =<< trim eval [CODE]
+    let &wrap = {a:wrap}
     call setline(1, 'abcdefgh|hidden|ijklmnpop')
     syntax match test /|hidden|/ conceal
     set conceallevel=2 concealcursor=n virtualedit=all rightleft
@@ -516,4 +520,66 @@
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_conceal_virtualedit_after_eol_rightleft()
+  CheckFeature rightleft
+  CheckScreendump
+
+  call Run_test_conceal_virtualedit_after_eol_rightleft(1)
+  call Run_test_conceal_virtualedit_after_eol_rightleft(0)
+endfunc
+
+" Test that cursor position is correct when double-width chars are concealed.
+func Run_test_conceal_double_width(wrap)
+  let code =<< trim eval [CODE]
+    let &wrap = {a:wrap}
+    call setline(1, ['aaaaa口=口bbbbb口=口ccccc', 'foobar'])
+    syntax match test /口=口/ conceal cchar=β
+    set conceallevel=2 concealcursor=n colorcolumn=30
+    normal! $
+  [CODE]
+  call writefile(code, 'XTest_conceal_double_width', 'D')
+  let buf = RunVimInTerminal('-S XTest_conceal_double_width', {'rows': 4})
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_1', {})
+  call term_sendkeys(buf, "gM")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_2', {})
+  call term_sendkeys(buf, ":set conceallevel=3\<CR>")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_3', {})
+  call term_sendkeys(buf, "$")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_4', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+endfunc
+
+func Test_conceal_double_width()
+  CheckScreendump
+
+  call Run_test_conceal_double_width(1)
+  call Run_test_conceal_double_width(0)
+endfunc
+
+" Test that line wrapping is correct when double-width chars are concealed.
+func Test_conceal_double_width_wrap()
+  CheckScreendump
+
+  let code =<< trim [CODE]
+    call setline(1, 'aaaaaaaaaa口=口bbbbbbbbbb口=口cccccccccc')
+    syntax match test /口=口/ conceal cchar=β
+    set conceallevel=2 concealcursor=n
+    normal! $
+  [CODE]
+  call writefile(code, 'XTest_conceal_double_width_wrap', 'D')
+  let buf = RunVimInTerminal('-S XTest_conceal_double_width_wrap', {'rows': 4, 'cols': 20})
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_wrap_1', {})
+  call term_sendkeys(buf, "gM")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_wrap_2', {})
+  call term_sendkeys(buf, ":set conceallevel=3\<CR>")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_wrap_3', {})
+  call term_sendkeys(buf, "$")
+  call VerifyScreenDump(buf, 'Test_conceal_double_width_wrap_4', {})
+
+  " clean up
+  call StopVimInTerminal(buf)
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 80dc667..77c9586 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    180,
+/**/
     179,
 /**/
     178,
