diff --git a/extern/glow-extras b/extern/glow-extras
index 9d8d4911d2bbe1d27097998194e25e670a3746c6..752c00a0b74d18a8562896a9c153a04c1831c42a 160000
--- a/extern/glow-extras
+++ b/extern/glow-extras
@@ -1 +1 @@
-Subproject commit 9d8d4911d2bbe1d27097998194e25e670a3746c6
+Subproject commit 752c00a0b74d18a8562896a9c153a04c1831c42a
diff --git a/samples/basic/viewer/main.cc b/samples/basic/viewer/main.cc
index d782890d745cb301fd31802b71ac92dcbc1ff54b..e539fd5501826afc55b0f63c0dcb93c7abda1127 100644
--- a/samples/basic/viewer/main.cc
+++ b/samples/basic/viewer/main.cc
@@ -343,11 +343,14 @@ void interactive_viewer(pm::vertex_attribute<tg::pos3> const& pos)
     // the lambda is called every frame
     // inside, viewer commands can be used, as well as ImGui UI elements
 
-    // a simple interactive viewer with a "make screenshot" button
+    // a simple interactive viewer with some interactive-related controls
     gv::interactive([&](auto) {
         if (ImGui::Button("make screenshot"))
             gv::make_screenshot("screenshot.png", 1920, 1080);
 
+        if (ImGui::Button("close viewer"))
+            gv::close_viewer();
+
         gv::view(pos);
     });