diff --git a/src/screen.c b/src/screen.c
index bff4926..66c3a39 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1031,6 +1031,12 @@
     int	    total_height;
     int	    popup_attr;
     int	    row;
+    int	    tl_corner_char = '+';
+    char    *tr_corner_str = "+";
+    int	    bl_corner_char = '+';
+    char    *br_corner_str = "+";
+    int	    hor_line_char = '-';
+    char    *ver_line_str = "|";
 
     // Find the window with the lowest zindex that hasn't been updated yet,
     // so that the window with a higher zindex is drawn later, thus goes on
@@ -1062,16 +1068,27 @@
 		+ wp->w_height + wp->w_popup_padding[2] + wp->w_popup_border[2];
 	popup_attr = get_wcr_attr(wp);
 
+	if (enc_utf8)
+	{
+	    tl_corner_char = 0x2554;
+	    tr_corner_str = "\xe2\x95\x97";
+	    bl_corner_char = 0x255a;
+	    br_corner_str = "\xe2\x95\x9d";
+	    hor_line_char = 0x2550;
+	    ver_line_str = "\xe2\x95\x91";
+	}
+
 	if (wp->w_popup_border[0] > 0)
 	{
 	    // top border
 	    screen_fill(wp->w_winrow, wp->w_winrow + 1,
 		    wp->w_wincol,
 		    wp->w_wincol + total_width,
-		    wp->w_popup_border[3] != 0 ? '+' : '-',
-		    '-', popup_attr);
+		    wp->w_popup_border[3] != 0
+					     ? tl_corner_char : hor_line_char,
+		    hor_line_char, popup_attr);
 	    if (wp->w_popup_border[1] > 0)
-		screen_puts((char_u *)"+", wp->w_winrow,
+		screen_puts((char_u *)tr_corner_str, wp->w_winrow,
 			wp->w_wincol + total_width - 1, popup_attr);
 	}
 
@@ -1091,14 +1108,14 @@
 	{
 	    // left border
 	    if (wp->w_popup_border[3] > 0)
-		screen_puts((char_u *)"|", row, wp->w_wincol, popup_attr);
+		screen_puts((char_u *)ver_line_str, row, wp->w_wincol, popup_attr);
 	    // left padding
 	    if (wp->w_popup_padding[3] > 0)
 		screen_puts(get_spaces(wp->w_popup_padding[3]), row,
 			wp->w_wincol + wp->w_popup_border[3], popup_attr);
 	    // right border
 	    if (wp->w_popup_border[1] > 0)
-		screen_puts((char_u *)"|", row,
+		screen_puts((char_u *)ver_line_str, row,
 			wp->w_wincol + total_width - 1, popup_attr);
 	    // right padding
 	    if (wp->w_popup_padding[1] > 0)
@@ -1125,10 +1142,10 @@
 	    screen_fill(row , row + 1,
 		    wp->w_wincol,
 		    wp->w_wincol + total_width,
-		    wp->w_popup_border[3] != 0 ? '+' : '-',
-		    '-', popup_attr);
+		    wp->w_popup_border[3] != 0 ? bl_corner_char : hor_line_char,
+		    hor_line_char, popup_attr);
 	    if (wp->w_popup_border[1] > 0)
-		screen_puts((char_u *)"+", row,
+		screen_puts((char_u *)br_corner_str, row,
 			wp->w_wincol + total_width - 1, popup_attr);
 	}
     }
diff --git a/src/testdir/dumps/Test_popupwin_21.dump b/src/testdir/dumps/Test_popupwin_21.dump
new file mode 100644
index 0000000..836abe4
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_21.dump
@@ -0,0 +1,15 @@
+>1+0&#ffffff0| @73
+|2| |╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|╔+0#0000001#ffd7ff255|═@11|╗| +0#0000000#ffffff0@18
+|3| |║+0#0000001#ffd7ff255|h|e|l@1|o| |b|o|r|d|e|r|║| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255|h|e|l@1|o| |p|a|d@1|i|n|g| | +0#0000000#ffffff0@4|║+0#0000001#ffd7ff255| @11|║| +0#0000000#ffffff0@18
+|4| |╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@5| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|║+0#0000001#ffd7ff255| |h|e|l@1|o| |b|o|t|h| |║| +0#0000000#ffffff0@18
+|5| @40|║+0#0000001#ffd7ff255| @11|║| +0#0000000#ffffff0@18
+|6| |╔+0#0000001#ffd7ff255|═@8| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@4|╚+0#0000001#ffd7ff255|═@11|╝| +0#0000000#ffffff0@18
+|7| |║+0#0000001#ffd7ff255|b|o|r|d|e|r| |T|L| +0#0000000#ffffff0@9| +0#0000001#ffd7ff255@3|p|a|d@1|i|n|g|s| @2| +0#0000000#ffffff0@37
+|8| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37
+|9| @20| +0#0000001#ffd7ff255@14| +0#0000000#ffffff0@37
+|1|0| @72
+|1@1| @72
+|1|2| @72
+|1|3| @72
+|1|4| @72
+@57|1|,|1| @10|T|o|p| 
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 795a1be..523bd59 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -60,20 +60,22 @@
   if !CanRunVimInTerminal()
     return
   endif
-  call writefile([
-	\ "call setline(1, range(1, 100))",
-	\ "call popup_create('hello border', {'line': 2, 'col': 3, 'border': []})",
-	\ "call popup_create('hello padding', {'line': 2, 'col': 23, 'padding': []})",
-	\ "call popup_create('hello both', {'line': 2, 'col': 43, 'border': [], 'padding': []})",
-	\ "call popup_create('border TL', {'line': 6, 'col': 3, 'border': [1, 0, 0, 4]})",
-	\ "call popup_create('paddings', {'line': 6, 'col': 23, 'padding': [1, 3, 2, 4]})",
-	\], 'XtestPopupBorder')
-  let buf = RunVimInTerminal('-S XtestPopupBorder', {'rows': 15})
-  call VerifyScreenDump(buf, 'Test_popupwin_20', {})
 
-  " clean up
-  call StopVimInTerminal(buf)
-  call delete('XtestPopupBorder')
+  for iter in range(0, 1)
+    call writefile([iter == 1 ? '' : 'set enc=latin1',
+	  \ "call setline(1, range(1, 100))",
+	  \ "call popup_create('hello border', {'line': 2, 'col': 3, 'border': []})",
+	  \ "call popup_create('hello padding', {'line': 2, 'col': 23, 'padding': []})",
+	  \ "call popup_create('hello both', {'line': 2, 'col': 43, 'border': [], 'padding': []})",
+	  \ "call popup_create('border TL', {'line': 6, 'col': 3, 'border': [1, 0, 0, 4]})",
+	  \ "call popup_create('paddings', {'line': 6, 'col': 23, 'padding': [1, 3, 2, 4]})",
+	  \], 'XtestPopupBorder')
+    let buf = RunVimInTerminal('-S XtestPopupBorder', {'rows': 15})
+    call VerifyScreenDump(buf, 'Test_popupwin_2' .. iter, {})
+
+    call StopVimInTerminal(buf)
+    call delete('XtestPopupBorder')
+  endfor
 
   let with_border_or_padding = {
 	\ 'line': 2,
diff --git a/src/version.c b/src/version.c
index 51dcae8..a82e6e9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1444,
+/**/
     1443,
 /**/
     1442,
