patch 8.1.2351: 'wincolor' not used for > for not fitting double width char

Problem:    'wincolor' not used for > for not fitting double width char.
            Also: popup drawn on right half of double width character looks
            wrong.
Solution:   Adjust color for > character.  Clear left half of double width
            character if right half is being overwritten.
diff --git a/src/drawline.c b/src/drawline.c
index 54163c7..189ed80 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1230,8 +1230,7 @@
 		    if (tocol == vcol)
 			tocol += n_extra;
 		    // combine 'showbreak' with 'wincolor'
-		    if (win_attr != 0)
-			char_attr = hl_combine_attr(win_attr, char_attr);
+		    char_attr = hl_combine_attr(win_attr, char_attr);
 #  ifdef FEAT_SYN_HL
 		    // combine 'showbreak' with 'cursorline'
 		    if (cul_attr != 0)
@@ -1616,6 +1615,8 @@
 			if (cul_attr)
 			    multi_attr = hl_combine_attr(multi_attr, cul_attr);
 #endif
+			multi_attr = hl_combine_attr(win_attr, multi_attr);
+
 			// put the pointer back to output the double-width
 			// character at the start of the next line.
 			++n_extra;
@@ -1790,7 +1791,7 @@
 		    mb_c = c;
 		    mb_utf8 = FALSE;
 		    mb_l = 1;
-		    multi_attr = HL_ATTR(HLF_AT);
+		    multi_attr = hl_combine_attr(win_attr, HL_ATTR(HLF_AT));
 		    // Put pointer back so that the character will be
 		    // displayed at the start of the next line.
 		    --ptr;
diff --git a/src/screen.c b/src/screen.c
index c0f7d49..763d7a8 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -460,6 +460,18 @@
     }
 #endif /* FEAT_RIGHTLEFT */
 
+#ifdef FEAT_TEXT_PROP
+    // First char of a popup window may go on top of the right half of a
+    // double-wide character. Clear the left half to avoid it getting the popup
+    // window background color.
+    if (coloff > 0 && ScreenLines[off_to] == 0)
+    {
+	ScreenLines[off_to - 1] = ' ';
+	ScreenLinesUC[off_to - 1] = 0;
+	screen_char(off_to - 1, row, col + coloff - 1);
+    }
+#endif
+
     redraw_next = char_needs_redraw(off_from, off_to, endcol - col);
 
     while (col < endcol)
diff --git a/src/testdir/dumps/Test_popupwin_doublewidth_1.dump b/src/testdir/dumps/Test_popupwin_doublewidth_1.dump
new file mode 100644
index 0000000..d59466d
--- /dev/null
+++ b/src/testdir/dumps/Test_popupwin_doublewidth_1.dump
@@ -0,0 +1,10 @@
+>x+0&#ffffff0| |你*0#0000001#ffd7ff255|好|,|世|界| +&|-| |>+0#4040ff13&| +0#0000000#ffffff0|好*&|世|界|你|好| +&@47
+|你*&|你*0#0000001#ffd7ff255|好|,|世|界|x+&@3|好*0#0000000#ffffff0|世|界|你|好| +&@48
+|x| |x+0#0000001#ffd7ff255| @12| +0#0000000#ffffff0|好*&|世|界|你|好| +&@47
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/src/version.c b/src/version.c
index 6c9ac22..ce3b731 100644
--- a/src/version.c
+++ b/src/version.c
@@ -738,6 +738,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2351,
+/**/
     2350,
 /**/
     2349,