diff --git a/wpigui/src/main/native/cpp/portable-file-dialogs.cpp b/wpigui/src/main/native/cpp/portable-file-dialogs.cpp
index 2e2ac7b..c4afb0b 100644
--- a/wpigui/src/main/native/cpp/portable-file-dialogs.cpp
+++ b/wpigui/src/main/native/cpp/portable-file-dialogs.cpp
@@ -702,6 +702,12 @@
 
 // dialog implementation
 
+internal::dialog::~dialog() {
+    if (m_async->m_running) {
+        kill();
+    }
+}
+
 bool internal::dialog::ready(int timeout /* = default_wait_timeout */) const
 {
     return m_async->ready(timeout);
@@ -804,7 +810,7 @@
 #if _WIN32
     static int CALLBACK bffcallback(HWND hwnd, UINT uMsg, LPARAM, LPARAM pData);
 #if PFD_HAS_IFILEDIALOG
-    std::string select_folder_vista(IFileDialog *ifd, bool force_path);
+    std::string select_folder_vista(IFileDialog *ifd, bool force_path, HWND active_window);
 #endif
 
     std::wstring m_wtitle;
@@ -831,8 +837,9 @@
     }
     filter_list += '\0';
 
+    HWND active_window = GetActiveWindow();
     m_async->start_func([this, in_type, title, default_path, filter_list,
-                         options](int *exit_code) -> std::string
+                         options, active_window](int *exit_code) -> std::string
     {
         (void)exit_code;
         m_impl->m_wtitle = internal::str2wstr(title);
@@ -858,7 +865,7 @@
 
                 // In case CoCreateInstance fails (which it should not), try legacy approach
                 if (SUCCEEDED(hr))
-                    return m_impl->select_folder_vista(ifd, options & opt::force_path);
+                    return m_impl->select_folder_vista(ifd, options & opt::force_path, active_window);
             }
 #endif
 
@@ -892,7 +899,7 @@
         OPENFILENAMEW ofn;
         memset(&ofn, 0, sizeof(ofn));
         ofn.lStructSize = sizeof(OPENFILENAMEW);
-        ofn.hwndOwner = GetActiveWindow();
+        ofn.hwndOwner = active_window;
 
         ofn.lpstrFilter = wfilter_list.c_str();
 
@@ -1169,7 +1176,7 @@
 }
 
 #if PFD_HAS_IFILEDIALOG
-std::string internal::file_dialog::Impl::select_folder_vista(IFileDialog *ifd, bool force_path)
+std::string internal::file_dialog::Impl::select_folder_vista(IFileDialog *ifd, bool force_path, HWND active_window)
 {
     std::string result;
 
@@ -1206,7 +1213,7 @@
     ifd->SetOptions(FOS_PICKFOLDERS | FOS_FORCEFILESYSTEM);
     ifd->SetTitle(m_wtitle.c_str());
 
-    hr = ifd->Show(GetActiveWindow());
+    hr = ifd->Show(active_window);
     if (SUCCEEDED(hr))
     {
         IShellItem* item;
@@ -1393,13 +1400,15 @@
     m_mappings[IDRETRY] = button::retry;
     m_mappings[IDIGNORE] = button::ignore;
 
-    m_async->start_func([text, title, style](int* exit_code) -> std::string
+    HWND active_window = GetActiveWindow();
+
+    m_async->start_func([text, title, style, active_window](int* exit_code) -> std::string
     {
         auto wtext = internal::str2wstr(text);
         auto wtitle = internal::str2wstr(title);
         // Apply new visual style (required for all Windows versions)
         internal::platform::new_style_context ctx;
-        *exit_code = MessageBoxW(GetActiveWindow(), wtext.c_str(), wtitle.c_str(), style);
+        *exit_code = MessageBoxW(active_window, wtext.c_str(), wtitle.c_str(), style);
         return "";
     });
 
diff --git a/wpigui/src/main/native/cpp/wpigui.cpp b/wpigui/src/main/native/cpp/wpigui.cpp
index a93ca2b..e2e05ce 100644
--- a/wpigui/src/main/native/cpp/wpigui.cpp
+++ b/wpigui/src/main/native/cpp/wpigui.cpp
@@ -4,9 +4,13 @@
 
 #include "wpigui.h"
 
+#include <stdint.h>
+
 #include <algorithm>
+#include <chrono>
 #include <cstdio>
 #include <cstring>
+#include <thread>
 
 #include <GLFW/glfw3.h>
 #include <IconsFontAwesome6.h>
@@ -88,6 +92,8 @@
     impl->userScale = num;
   } else if (std::strncmp(lineStr, "style=", 6) == 0) {
     impl->style = num;
+  } else if (std::strncmp(lineStr, "fps=", 4) == 0) {
+    impl->fps = num;
   }
 }
 
@@ -98,9 +104,10 @@
   }
   out_buf->appendf(
       "[MainWindow][GLOBAL]\nwidth=%d\nheight=%d\nmaximized=%d\n"
-      "xpos=%d\nypos=%d\nuserScale=%d\nstyle=%d\n\n",
+      "xpos=%d\nypos=%d\nuserScale=%d\nstyle=%d\nfps=%d\n\n",
       gContext->width, gContext->height, gContext->maximized ? 1 : 0,
-      gContext->xPos, gContext->yPos, gContext->userScale, gContext->style);
+      gContext->xPos, gContext->yPos, gContext->userScale, gContext->style,
+      gContext->fps);
 }
 
 void gui::CreateContext() {
@@ -220,8 +227,6 @@
   }
 
   // Set initial window settings
-  glfwWindowHint(GLFW_MAXIMIZED, gContext->maximized ? GLFW_TRUE : GLFW_FALSE);
-
   if (gContext->width == 0 || gContext->height == 0) {
     gContext->width = gContext->defaultWidth;
     gContext->height = gContext->defaultHeight;
@@ -296,6 +301,10 @@
     glfwShowWindow(gContext->window);
   }
 
+  if (gContext->maximized) {
+    glfwMaximizeWindow(gContext->window);
+  }
+
   // Set window callbacks
   glfwGetWindowSize(gContext->window, &gContext->width, &gContext->height);
   glfwSetWindowSizeCallback(gContext->window, WindowSizeCallback);
@@ -331,6 +340,8 @@
 void gui::Main() {
   // Main loop
   while (!glfwWindowShouldClose(gContext->window) && !gContext->exit) {
+    double startTime = glfwGetTime();
+
     // Poll and handle events (inputs, window resize, etc.)
     glfwPollEvents();
     gContext->isPlatformRendering = true;
@@ -351,6 +362,15 @@
         io.WantSaveIniSettings = false;  // reset flag
       }
     }
+
+    // if FPS limiting, sleep until next frame time
+    if (gContext->fps != 0) {
+      double sleepTime = (1.0 / gContext->fps) - (glfwGetTime() - startTime);
+      if (sleepTime > 1e-6) {
+        std::this_thread::sleep_for(
+            std::chrono::microseconds(static_cast<int64_t>(sleepTime * 1e6)));
+      }
+    }
   }
 
   // Save (if custom save)
@@ -477,6 +497,10 @@
   }
 }
 
+void gui::SetFPS(int fps) {
+  gContext->fps = fps;
+}
+
 void gui::SetClearColor(ImVec4 color) {
   gContext->clearColor = color;
 }
@@ -539,6 +563,27 @@
       ImGui::EndMenu();
     }
 
+    if (ImGui::BeginMenu("Frame Rate")) {
+      bool selected;
+      selected = gContext->fps == 0;
+      if (ImGui::MenuItem("vsync", nullptr, &selected)) {
+        gContext->fps = 0;
+      }
+      selected = gContext->fps == 30;
+      if (ImGui::MenuItem("30 fps", nullptr, &selected)) {
+        gContext->fps = 30;
+      }
+      selected = gContext->fps == 60;
+      if (ImGui::MenuItem("60 fps", nullptr, &selected)) {
+        gContext->fps = 60;
+      }
+      selected = gContext->fps == 120;
+      if (ImGui::MenuItem("120 fps", nullptr, &selected)) {
+        gContext->fps = 120;
+      }
+      ImGui::EndMenu();
+    }
+
     if (!gContext->saveSettings) {
       ImGui::MenuItem("Reset UI on Exit?", nullptr, &gContext->resetOnExit);
     }
diff --git a/wpigui/src/main/native/cpp/wpigui_openurl.cpp b/wpigui/src/main/native/cpp/wpigui_openurl.cpp
index b913ceb..f609567 100644
--- a/wpigui/src/main/native/cpp/wpigui_openurl.cpp
+++ b/wpigui/src/main/native/cpp/wpigui_openurl.cpp
@@ -23,6 +23,10 @@
 #else
   static constexpr const char* opencmd = "xdg-open";
 #endif
-  execlp(opencmd, opencmd, url.c_str(), static_cast<const char*>(nullptr));
+  // If we forked into the child process, run execlp(), which replaces the
+  // current process image
+  if (fork() == 0) {
+    execlp(opencmd, opencmd, url.c_str(), static_cast<const char*>(nullptr));
+  }
 #endif
 }
diff --git a/wpigui/src/main/native/include/portable-file-dialogs.h b/wpigui/src/main/native/include/portable-file-dialogs.h
index 95d5f43..e4a4f96 100644
--- a/wpigui/src/main/native/include/portable-file-dialogs.h
+++ b/wpigui/src/main/native/include/portable-file-dialogs.h
@@ -128,6 +128,7 @@
 class dialog : protected settings
 {
 public:
+    virtual ~dialog();
     bool ready(int timeout = default_wait_timeout) const;
     bool kill() const;
 
@@ -146,7 +147,7 @@
     std::shared_ptr<executor> m_async;
 };
 
-class file_dialog : public dialog
+class file_dialog : public internal::dialog
 {
 protected:
     enum type
diff --git a/wpigui/src/main/native/include/wpigui.h b/wpigui/src/main/native/include/wpigui.h
index db74291..a745431 100644
--- a/wpigui/src/main/native/include/wpigui.h
+++ b/wpigui/src/main/native/include/wpigui.h
@@ -128,7 +128,7 @@
 
 inline bool AddIcon(std::string_view data) {
   return AddIcon(reinterpret_cast<const unsigned char*>(data.data()),
-                 data.size());
+                 static_cast<int>(data.size()));
 }
 
 /**
@@ -163,6 +163,13 @@
 void SetStyle(Style style);
 
 /**
+ * Sets the FPS limit.  Using this function makes this setting persistent.
+ *
+ * @param fps FPS (0=vsync)
+ */
+void SetFPS(int fps);
+
+/**
  * Sets the clear (background) color.
  *
  * @param color Color
diff --git a/wpigui/src/main/native/include/wpigui_internal.h b/wpigui/src/main/native/include/wpigui_internal.h
index f4d352b..e9735f6 100644
--- a/wpigui/src/main/native/include/wpigui_internal.h
+++ b/wpigui/src/main/native/include/wpigui_internal.h
@@ -24,6 +24,7 @@
   int yPos = -1;
   int userScale = 2;
   int style = 0;
+  int fps = 120;
 };
 
 constexpr int kFontScaledLevels = 9;
