diff --git a/firmware/application/ui_record_view.cpp b/firmware/application/ui_record_view.cpp
index be8c818e44823c82c4cafe600d2b1024180ce0ca..8d174e2202b7ae5c05aa2fabaa33834f3e34e9d5 100644
--- a/firmware/application/ui_record_view.cpp
+++ b/firmware/application/ui_record_view.cpp
@@ -201,6 +201,11 @@ void RecordView::start() {
 	update_status_display();
 }
 
+void RecordView::on_hide() {
+	stop(); // Stop current recording
+	View::on_hide();
+}
+
 void RecordView::stop() {
 	if( is_active() ) {
 		capture_thread.reset();
diff --git a/firmware/application/ui_record_view.hpp b/firmware/application/ui_record_view.hpp
index d1911d1dfe38ba5df84736fec21d5afbe94aee12..6f3a6a142b2a92d9e0164cda5841cf556ffa7c0e 100644
--- a/firmware/application/ui_record_view.hpp
+++ b/firmware/application/ui_record_view.hpp
@@ -59,6 +59,7 @@ public:
 
 	void start();
 	void stop();
+	void on_hide() override;
 
 	bool is_active() const;