diff --git a/options-table.c b/options-table.c
index 515714f..92b127e 100644
--- a/options-table.c
+++ b/options-table.c
@@ -1025,6 +1025,24 @@ const struct options_table_entry options_table[] = {
 	  .text = "Format of the position indicator in copy mode."
 	},
 
+	{ .name = "copy-mode-position-style",
+	  .type = OPTIONS_TABLE_STRING,
+	  .scope = OPTIONS_TABLE_WINDOW,
+	  .default_str = "#{mode-style}",
+	  .flags = OPTIONS_TABLE_IS_STYLE,
+	  .separator = ",",
+	  .text = "Style of position indicator in copy mode."
+	},
+
+	{ .name = "copy-mode-selection-style",
+	  .type = OPTIONS_TABLE_STRING,
+	  .scope = OPTIONS_TABLE_WINDOW,
+	  .default_str = "#{mode-style}",
+	  .flags = OPTIONS_TABLE_IS_STYLE,
+	  .separator = ",",
+	  .text = "Style of selection in copy mode."
+	},
+
 	{ .name = "fill-character",
 	  .type = OPTIONS_TABLE_STRING,
 	  .scope = OPTIONS_TABLE_WINDOW,
diff --git a/tmux.1 b/tmux.1
index 98cf871..38552cf 100644
--- a/tmux.1
+++ b/tmux.1
@@ -4890,6 +4890,22 @@ or
 contains
 .Ql vi .
 .Pp
+.It Ic copy-mode-position-style Ar style
+Set the style of the position indicator in copy mode.
+For how to specify
+.Ar style ,
+see the
+.Sx STYLES
+section.
+.Pp
+.It Ic copy-mode-selection-style Ar style
+Set the style of the selection in copy mode.
+For how to specify
+.Ar style ,
+see the
+.Sx STYLES
+section.
+.Pp
 .It Ic mode-style Ar style
 Set window modes style.
 For how to specify
diff --git a/window-copy.c b/window-copy.c
index 36b9f89..1cda6d3 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -4391,13 +4391,15 @@ window_copy_write_line(struct window_mode_entry *wme,
 	char				*expanded;
 	struct format_tree		*ft;
 
-	style_apply(&gc, oo, "mode-style", NULL);
+	ft = format_create_defaults(NULL, NULL, NULL, NULL, wp);
+
+	style_apply(&gc, oo, "copy-mode-position-style", ft);
 	gc.flags |= GRID_FLAG_NOPALETTE;
-	style_apply(&mgc, oo, "copy-mode-match-style", NULL);
+	style_apply(&mgc, oo, "copy-mode-match-style", ft);
 	mgc.flags |= GRID_FLAG_NOPALETTE;
-	style_apply(&cgc, oo, "copy-mode-current-match-style", NULL);
+	style_apply(&cgc, oo, "copy-mode-current-match-style", ft);
 	cgc.flags |= GRID_FLAG_NOPALETTE;
-	style_apply(&mkgc, oo, "copy-mode-mark-style", NULL);
+	style_apply(&mkgc, oo, "copy-mode-mark-style", ft);
 	mkgc.flags |= GRID_FLAG_NOPALETTE;
 
 	window_copy_write_one(wme, ctx, py, hsize - data->oy + py,
@@ -4406,14 +4408,12 @@ window_copy_write_line(struct window_mode_entry *wme,
 	if (py == 0 && s->rupper < s->rlower && !data->hide_position) {
 		value = options_get_string(oo, "copy-mode-position-format");
 		if (*value != '\0') {
-			ft = format_create_defaults(NULL, NULL, NULL, NULL, wp);
 			expanded = format_expand(ft, value);
 			if (*expanded != '\0') {
 				screen_write_cursormove(ctx, 0, 0, 0);
 				format_draw(ctx, &gc, sx, expanded, NULL, 0);
 			}
 			free(expanded);
-			format_free(ft);
 		}
 	}
 
@@ -4421,6 +4421,8 @@ window_copy_write_line(struct window_mode_entry *wme,
 		screen_write_cursormove(ctx, screen_size_x(s) - 1, py, 0);
 		screen_write_putc(ctx, &grid_default_cell, '$');
 	}
+
+	format_free(ft);
 }
 
 static void
@@ -4668,6 +4670,7 @@ window_copy_set_selection(struct window_mode_entry *wme, int may_redraw,
 	struct grid_cell		 gc;
 	u_int				 sx, sy, cy, endsx, endsy;
 	int				 startrelpos, endrelpos;
+	struct format_tree		*ft;
 
 	window_copy_synchronize_cursor(wme, no_reset);
 
@@ -4689,8 +4692,10 @@ window_copy_set_selection(struct window_mode_entry *wme, int may_redraw,
 	}
 
 	/* Set colours and selection. */
-	style_apply(&gc, oo, "mode-style", NULL);
+	ft = format_create_defaults(NULL, NULL, NULL, NULL, wp);
+	style_apply(&gc, oo, "copy-mode-selection-style", ft);
 	gc.flags |= GRID_FLAG_NOPALETTE;
+	format_free(ft);
 	screen_set_selection(s, sx, sy, endsx, endsy, data->rectflag,
 	    data->modekeys, &gc);