diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index cda498e2..b54d6835 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -361,6 +361,9 @@ impl Application {
             ConfigEvent::Update(editor_config) => {
                 let mut app_config = (*self.config.load().clone()).clone();
                 app_config.editor = *editor_config;
+                if let Err(err) = self.terminal.reconfigure(app_config.editor.clone().into()) {
+                    self.editor.set_error(err.to_string());
+                };
                 self.config.store(Arc::new(app_config));
             }
         }
@@ -419,6 +422,8 @@ impl Application {
                 .map_err(|err| anyhow::anyhow!("Failed to load config: {}", err))?;
             self.refresh_language_config()?;
             self.refresh_theme(&default_config)?;
+            self.terminal
+                .reconfigure(default_config.editor.clone().into())?;
             // Store new config
             self.config.store(Arc::new(default_config));
             Ok(())
diff --git a/helix-tui/src/backend/crossterm.rs b/helix-tui/src/backend/crossterm.rs
index 9d70a9fb..0c32028e 100644
--- a/helix-tui/src/backend/crossterm.rs
+++ b/helix-tui/src/backend/crossterm.rs
@@ -63,6 +63,7 @@ pub struct CrosstermBackend<W: Write> {
     buffer: W,
     capabilities: Capabilities,
     supports_keyboard_enhancement_protocol: OnceCell<bool>,
+    mouse_capture_enabled: bool,
 }
 
 impl<W> CrosstermBackend<W>
@@ -74,6 +75,7 @@ where
             buffer,
             capabilities: Capabilities::from_env_or_default(config),
             supports_keyboard_enhancement_protocol: OnceCell::new(),
+            mouse_capture_enabled: false,
         }
     }
 
@@ -123,6 +125,7 @@ where
         execute!(self.buffer, terminal::Clear(terminal::ClearType::All))?;
         if config.enable_mouse_capture {
             execute!(self.buffer, EnableMouseCapture)?;
+            self.mouse_capture_enabled = true;
         }
         if self.supports_keyboard_enhancement_protocol() {
             execute!(
@@ -136,6 +139,19 @@ where
         Ok(())
     }
 
+    fn reconfigure(&mut self, config: Config) -> io::Result<()> {
+        if self.mouse_capture_enabled != config.enable_mouse_capture {
+            if config.enable_mouse_capture {
+                execute!(self.buffer, EnableMouseCapture)?;
+            } else {
+                execute!(self.buffer, DisableMouseCapture)?;
+            }
+            self.mouse_capture_enabled = config.enable_mouse_capture;
+        }
+
+        Ok(())
+    }
+
     fn restore(&mut self, config: Config) -> io::Result<()> {
         // reset cursor shape
         write!(self.buffer, "\x1B[0 q")?;
diff --git a/helix-tui/src/backend/mod.rs b/helix-tui/src/backend/mod.rs
index 6d7c3894..6994bc6f 100644
--- a/helix-tui/src/backend/mod.rs
+++ b/helix-tui/src/backend/mod.rs
@@ -14,6 +14,7 @@ pub use self::test::TestBackend;
 
 pub trait Backend {
     fn claim(&mut self, config: Config) -> Result<(), io::Error>;
+    fn reconfigure(&mut self, config: Config) -> Result<(), io::Error>;
     fn restore(&mut self, config: Config) -> Result<(), io::Error>;
     fn force_restore() -> Result<(), io::Error>;
     fn draw<'a, I>(&mut self, content: I) -> Result<(), io::Error>
diff --git a/helix-tui/src/backend/test.rs b/helix-tui/src/backend/test.rs
index ff133ff3..771cc309 100644
--- a/helix-tui/src/backend/test.rs
+++ b/helix-tui/src/backend/test.rs
@@ -111,6 +111,10 @@ impl Backend for TestBackend {
         Ok(())
     }
 
+    fn reconfigure(&mut self, _config: Config) -> Result<(), io::Error> {
+        Ok(())
+    }
+
     fn restore(&mut self, _config: Config) -> Result<(), io::Error> {
         Ok(())
     }
diff --git a/helix-tui/src/terminal.rs b/helix-tui/src/terminal.rs
index 802a8c1d..8b734275 100644
--- a/helix-tui/src/terminal.rs
+++ b/helix-tui/src/terminal.rs
@@ -116,6 +116,10 @@ where
         self.backend.claim(config)
     }
 
+    pub fn reconfigure(&mut self, config: Config) -> io::Result<()> {
+        self.backend.reconfigure(config)
+    }
+
     pub fn restore(&mut self, config: Config) -> io::Result<()> {
         self.backend.restore(config)
     }