diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 171198b181a72adb31e51edf05d9d7c9dd6654b0..04ef6e11d5c39c8ded842fa04cdd4dd66ced176e 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -1010,6 +1010,23 @@ var gMainPane = {
       gMainPane.onPrimaryBrowserLanguageMenuChange(event);
     });
 
+    // Temporary hack to cause the menu popup to resize itself just after being
+    // shown. See tor-browser#41371
+    // We get ~one frame of a potentially badly sized popup, and then the popup
+    // should re-adjust to the new size.
+    // TODO: Remove with firefox 115 since this is fixed properly in
+    // mozilla-central 107.
+    menulist.addEventListener("popupshown", () => {
+      const popupBox = menulist.menupopup;
+      // We change a layout parameter and then force a relayout. We choose
+      // "min-height: 0" since we expect this won't change the displayed result
+      // but is enough to force the relayout.
+      const minHeight = popupBox.style.minHeight;
+      popupBox.style.minHeight = 0;
+      popupBox.getBoundingClientRect();
+      popupBox.style.minHeight = minHeight;
+    });
+
     gMainPane.updatePrimaryBrowserLanguageUI(Services.locale.appLocaleAsBCP47);
   },