diff --git a/SOURCES/screen-bracketed_paste.patch b/SOURCES/screen-bracketed_paste.patch
new file mode 100644
index 0000000..82f3cac
--- /dev/null
+++ b/SOURCES/screen-bracketed_paste.patch
@@ -0,0 +1,286 @@
+From 068ee32fa7919a93026dc11b61ff92cc6ce06b98 Mon Sep 17 00:00:00 2001
+From: Vaclav Dolezal <vdolezal@redhat.com>
+Date: Fri, 17 Jan 2020 15:12:00 +0100
+Subject: [PATCH] Backport support for bracketed-paste and DECSCUSR
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Backported commit c389013e89e7b04ce43872f2e72d43f77461a3c0
+Applied fix from d2d33f664132e9473c62f37a4758a047fa83eb7a
+
+Reference: https://lists.gnu.org/archive/html/screen-devel/2013-03/msg00000.html
+Authored-by: Hayaki Saito <user@zuse.jp>
+Backported-by: Václav Doležal <vdolezal@redhat.com>
+Signed-off-by: Václav Doležal <vdolezal@redhat.com>
+---
+ src/ansi.c    | 12 ++++++++++++
+ src/display.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/display.h |  4 ++++
+ src/extern.h  |  4 ++++
+ src/layer.c   | 26 +++++++++++++++++++++++++
+ src/window.c  |  2 ++
+ src/window.h  |  2 ++
+ 7 files changed, 104 insertions(+)
+
+diff --git a/src/ansi.c b/src/ansi.c
+index 8df79b2..5a251bf 100644
+--- a/src/ansi.c
++++ b/src/ansi.c
+@@ -193,6 +193,8 @@ register struct win *p;
+   p->w_insert = 0;
+   p->w_revvid = 0;
+   p->w_mouse = 0;
++  p->w_bracketed = 0;
++  p->w_cursorstyle = 0;
+   p->w_curinv = 0;
+   p->w_curvvis = 0;
+   p->w_autolf = 0;
+@@ -1340,6 +1342,12 @@ int c, intermediate;
+ 	  break;
+ 	}
+       break;
++    case ' ':
++      if (c == 'q') {
++        curr->w_cursorstyle = a1;
++        LCursorStyle(&curr->w_layer, curr->w_cursorstyle);
++      }
++      break;
+     case '?':
+       for (a2 = 0; a2 < curr->w_NumArgs; a2++)
+ 	{
+@@ -1462,6 +1470,10 @@ int c, intermediate;
+ 	      curr->w_mouse = i ? a1 : 0;
+ 	      LMouseMode(&curr->w_layer, curr->w_mouse);
+ 	      break;
++            case 2004:	/* bracketed paste mode */
++              curr->w_bracketed = i ? 1 : 0;
++              LBracketedPasteMode(&curr->w_layer, curr->w_bracketed);
++              break;
+ 	    }
+ 	}
+       break;
+diff --git a/src/display.c b/src/display.c
+index bcf914b..915d9b3 100644
+--- a/src/display.c
++++ b/src/display.c
+@@ -121,6 +121,8 @@ struct display TheDisplay;
+ int defobuflimit = OBUF_MAX;
+ int defnonblock = -1;
+ int defmousetrack = 0;
++int defbracketed = 0;
++int defcursorstyle = 0;
+ #ifdef AUTO_NUKE
+ int defautonuke = 0;
+ #endif
+@@ -183,6 +185,8 @@ DefRestore()
+   LCursorkeysMode(flayer, 0);
+   LCursorVisibility(flayer, 0);
+   LMouseMode(flayer, 0);
++  LBracketedPasteMode(flayer, 0);
++  LCursorStyle(flayer, 0);
+   LSetRendition(flayer, &mchar_null);
+   LSetFlow(flayer, nwin_default.flowflag & FLOW_NOW);
+ }
+@@ -314,6 +318,8 @@ struct mode *Mode;
+   D_user = *u;
+   D_processinput = ProcessInput;
+   D_mousetrack = defmousetrack;
++  D_bracketed = defbracketed;
++  D_cursorstyle = defcursorstyle;
+   return display;
+ }
+ 
+@@ -487,6 +493,8 @@ FinitTerm()
+       if (D_mousetrack)
+ 	D_mousetrack = 0;
+       MouseMode(0);
++      BracketedPasteMode(0);
++      CursorStyle(0);
+       SetRendition(&mchar_null);
+       SetFlow(FLOW_NOW);
+ #ifdef MAPKEYS
+@@ -836,6 +844,46 @@ int mode;
+     }
+ }
+ 
++void
++BracketedPasteMode(mode)
++int mode;
++{
++  if (!display)
++    return;
++
++  if (D_bracketed != mode) {
++    if (!D_CXT)
++      return;
++    if (D_bracketed) {
++      AddStr("\033[?2004l");
++    }
++    if (mode) {
++      AddStr("\033[?2004h");
++    }
++    D_bracketed = mode;
++  }
++}
++
++void
++CursorStyle(mode)
++int mode;
++{
++  char buf[32];
++
++  if (!display)
++    return;
++
++  if (D_cursorstyle != mode) {
++    if (!D_CXT)
++      return;
++    if (mode < 0)
++      return;
++    sprintf(buf, "\033[%d q", mode);
++    AddStr(buf);
++    D_cursorstyle = mode;
++  }
++}
++
+ static int StrCost;
+ 
+ /* ARGSUSED */
+@@ -1261,6 +1309,8 @@ int cur_only;
+   CursorkeysMode(0);
+   CursorVisibility(0);
+   MouseMode(0);
++  BracketedPasteMode(0);
++  CursorStyle(0);
+   SetRendition(&mchar_null);
+   SetFlow(FLOW_NOW);
+ 
+@@ -3121,6 +3171,8 @@ NukePending()
+   int oldkeypad = D_keypad, oldcursorkeys = D_cursorkeys;
+   int oldcurvis = D_curvis;
+   int oldmouse = D_mouse;
++  int oldbracketed = D_bracketed;
++  int oldcursorstyle = D_cursorstyle;
+ 
+   oldrend = D_rend;
+   len = D_obufp - D_obuf;
+@@ -3183,6 +3235,8 @@ NukePending()
+   CursorkeysMode(oldcursorkeys);
+   CursorVisibility(oldcurvis);
+   MouseMode(oldmouse);
++  BracketedPasteMode(oldbracketed);
++  CursorStyle(oldcursorstyle);
+   if (D_CWS)
+     {
+       debug("ResizeDisplay: using WS\n");
+diff --git a/src/display.h b/src/display.h
+index a433e6d..4fbfe27 100644
+--- a/src/display.h
++++ b/src/display.h
+@@ -102,6 +102,8 @@ struct display
+   int   d_mouse;		/* mouse mode */
+   int	d_mousetrack;		/* set when user wants to use mouse even when the window
+ 				   does not */
++  int   d_bracketed;		/* bracketed paste mode */
++  int   d_cursorstyle;		/* cursor style */
+ #ifdef RXVT_OSC
+   int   d_xtermosc[4];		/* osc used */
+ #endif
+@@ -189,6 +191,8 @@ extern struct display TheDisplay;
+ 
+ #define D_user		DISPLAY(d_user)
+ #define D_username	(DISPLAY(d_user) ? DISPLAY(d_user)->u_name : 0)
++#define D_bracketed	DISPLAY(d_bracketed)
++#define D_cursorstyle	DISPLAY(d_cursorstyle)
+ #define D_canvas	DISPLAY(d_canvas)
+ #define D_cvlist	DISPLAY(d_cvlist)
+ #define D_layout	DISPLAY(d_layout)
+diff --git a/src/extern.h b/src/extern.h
+index 8690821..be5190e 100644
+--- a/src/extern.h
++++ b/src/extern.h
+@@ -287,6 +287,8 @@ extern void  CursorkeysMode __P((int));
+ extern void  ReverseVideo __P((int));
+ extern void  CursorVisibility __P((int));
+ extern void  MouseMode __P((int));
++extern void  BracketedPasteMode __P((int));
++extern void  CursorStyle __P((int));
+ extern void  SetFont __P((int));
+ extern void  SetAttr __P((int));
+ extern void  SetColor __P((int, int));
+@@ -447,6 +449,8 @@ extern void  LSetFlow __P((struct layer *, int));
+ extern void  LKeypadMode __P((struct layer *, int));
+ extern void  LCursorkeysMode __P((struct layer *, int));
+ extern void  LMouseMode __P((struct layer *, int));
++extern void  LBracketedPasteMode __P((struct layer *, int));
++extern void  LCursorStyle __P((struct layer *, int));
+ #ifdef USEVARARGS
+ extern void  LMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3)));
+ #else
+diff --git a/src/layer.c b/src/layer.c
+index 1ae7972..b1ced76 100644
+--- a/src/layer.c
++++ b/src/layer.c
+@@ -910,6 +910,32 @@ int on;
+     }
+ }
+ 
++void LBracketedPasteMode(struct layer *l, int on)
++{
++  struct canvas *cv;
++  for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
++    display = cv->c_display;
++    if (D_blocked)
++      continue;
++    if (cv != D_forecv)
++      continue;
++    BracketedPasteMode(on);
++  }
++}
++
++void LCursorStyle(struct layer *l, int style)
++{
++  struct canvas *cv;
++  for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
++    display = cv->c_display;
++    if (D_blocked)
++      continue;
++    if (cv != D_forecv)
++      continue;
++    CursorStyle(style);
++  }
++}
++
+ void
+ LClearAll(l, uself)
+ struct layer *l;
+diff --git a/src/window.c b/src/window.c
+index f5e30a9..f596f92 100644
+--- a/src/window.c
++++ b/src/window.c
+@@ -498,6 +498,8 @@ WinRestore()
+       ReverseVideo(fore->w_revvid);
+       CursorVisibility(fore->w_curinv ? -1 : fore->w_curvvis);
+       MouseMode(fore->w_mouse);
++      BracketedPasteMode(fore->w_bracketed);
++      CursorStyle(fore->w_cursorstyle);
+     }
+ }
+ 
+diff --git a/src/window.h b/src/window.h
+index 7fc7c72..a91467b 100644
+--- a/src/window.h
++++ b/src/window.h
+@@ -235,6 +235,8 @@ struct win
+   char	 w_xtermosc[4][MAXSTR];	/* special xterm/rxvt escapes */
+ #endif
+   int    w_mouse;		/* mouse mode 0,9,1000 */
++  int	 w_bracketed;		/* bracketed paste mode */
++  int	 w_cursorstyle;		/* cursor style */
+ #ifdef HAVE_BRAILLE
+   int	 w_bd_x, w_bd_y;	/* Braille cursor position */
+ #endif
+-- 
+2.20.1
+
diff --git a/SPECS/screen.spec b/SPECS/screen.spec
index 5c1092e..f146d77 100644
--- a/SPECS/screen.spec
+++ b/SPECS/screen.spec
@@ -4,7 +4,7 @@
 Summary: A screen manager that supports multiple logins on one terminal
 Name: screen
 Version: 4.1.0
-Release: 0.25.20120314git3c2946%{?dist}
+Release: 0.26.20120314git3c2946%{?dist}
 License: GPLv2+
 Group: Applications/System
 URL: http://www.gnu.org/software/screen
@@ -37,6 +37,7 @@ Patch12: screen-fix-term.patch
 Patch13: screen-reattach.patch
 Patch14: screen-STIG-GEN003660.patch
 Patch15: screen-4.1.0-caption-padding.patch
+Patch16: screen-bracketed_paste.patch
 
 %description
 The screen utility allows you to have multiple logins on just one
@@ -65,6 +66,7 @@ support multiple logins on one terminal.
 %patch13 -p2 -b .cannot-reattach
 %patch14 -p2 -b .STIG-GEN003660
 %patch15 -p2 -b .caption-padding
+%patch16 -p2 -b .bracketed-paste
 
 
 %build
@@ -161,7 +163,10 @@ fi
 %endif
 
 %changelog
-* Tue Oct 04 2017 Josef Ridky <jridky@redhat.com> - 4.1.0-0.25.2012314git3c2946
+* Tue Feb 04 2020 Václav Doležal <vdolezal@redhat.com> - 4.1.0-0.26.2012314git3c2946
+- Resolves: #1791793 - backport Bracketed Past Mode support
+
+* Wed Oct 04 2017 Josef Ridky <jridky@redhat.com> - 4.1.0-0.25.2012314git3c2946
 - Resolves: #1423036 - fix issue with coloring when using caption padding
 
 * Thu Jun 30 2016 Petr Hracek <phracek@redhat.com> - 4.1.0-0.24.20120314git3c2946