diff --git a/pd/nw/index.js b/pd/nw/index.js
index 9efc77338aa75eda21a1164cdd8031ea4cba2f96..8917238b0c88e9e30d4498f6e481d3ca04bfc8d4 100644
--- a/pd/nw/index.js
+++ b/pd/nw/index.js
@@ -84,6 +84,8 @@ document.getElementById("fileDialog").setAttribute("accept",
 
 nw_create_pd_window_menus();
 
+gui.Window.get().setMinimumSize(350,250);
+
 pdgui.connect();
 pdgui.init_socket_events();
 
diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index 79a71f4cca47431de046fbdabaf5e7e0a6ed40d3..1c81e9d7a245facc21f52024cd292a6b8ffadc96 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -398,6 +398,7 @@ var canvas_events = (function() {
     gui.Window.get().on("close", function() {
         pdgui.pdsend(name, "menuclose 0");
     });
+    // update viewport size when window size changes
     gui.Window.get().on("maximize", function() {
         pdgui.gui_canvas_getscroll(name);
     });
@@ -407,6 +408,8 @@ var canvas_events = (function() {
     gui.Window.get().on("resize", function() {
         pdgui.gui_canvas_getscroll(name);
     });
+    // set minimum window size
+    gui.Window.get().setMinimumSize(150, 100); 
 
 
     return {