diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc
index 636035a..c070a7d 100644
--- a/gtk2_ardour/panner_ui.cc
+++ b/gtk2_ardour/panner_ui.cc
@@ -497,9 +497,9 @@ PannerUI::build_pan_menu (uint32_t which)
 	bypass_menu_item->set_active (_io->panner().bypassed());
 	bypass_menu_item->signal_toggled().connect (mem_fun(*this, &PannerUI::pan_bypass_toggle));
 
-	items.push_back (MenuElem (_("Reset"), mem_fun(*this, &PannerUI::pan_reset)));
+	items.push_back (MenuElem (_("Reset"), bind (mem_fun (*this, &PannerUI::pan_reset), which)));
 	items.push_back (SeparatorElem());
-	items.push_back (MenuElem (_("Reset all")));
+	items.push_back (MenuElem (_("Reset all"), mem_fun (*this, &PannerUI::pan_reset_all)));
 }
 
 void
@@ -518,8 +518,18 @@ PannerUI::pan_bypass_toggle ()
 }
 
 void
-PannerUI::pan_reset ()
+PannerUI::pan_reset (uint32_t which)
 {
+	_io->panner().streampanner(which).set_position (0.5);
+}
+
+void
+PannerUI::pan_reset_all ()
+{
+	uint32_t const N = _io->panner().npanners ();
+	for (uint32_t i = 0; i < N; ++i) {
+		_io->panner().streampanner(i).set_position (0.5);
+	}
 }
 
 void
diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h
index b6c439f..3fb4632 100644
--- a/gtk2_ardour/panner_ui.h
+++ b/gtk2_ardour/panner_ui.h
@@ -142,7 +142,8 @@ class PannerUI : public Gtk::HBox
 	Gtk::CheckMenuItem* bypass_menu_item;
 	void build_pan_menu (uint32_t which);
 	void pan_mute (uint32_t which);
-	void pan_reset ();
+	void pan_reset (uint32_t);
+	void pan_reset_all ();
 	void pan_bypass_toggle ();
 
 	void pan_automation_state_changed();
