diff --git a/Cargo.toml b/Cargo.toml
index 02eb93ec..16221eb6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -26,7 +26,7 @@ objc = "0.2"
 [target.'cfg(target_os = "macos")'.dependencies]
 objc = "0.2"
 cgl = "0.1"
-cocoa = "0.5.0"
+cocoa = "0.5.1"
 core-foundation = "0"
 core-graphics = "0.4"
 
diff --git a/src/platform/macos/mod.rs b/src/platform/macos/mod.rs
index 2ed0e895..68d2a35a 100644
--- a/src/platform/macos/mod.rs
+++ b/src/platform/macos/mod.rs
@@ -13,8 +13,8 @@ use objc::declare::ClassDecl;
 
 use cocoa::base::{id, nil};
 use cocoa::foundation::{NSAutoreleasePool, NSDate, NSDefaultRunLoopMode, NSPoint, NSRect, NSSize,
-                        NSString, NSUInteger};
-use cocoa::appkit::{self, NSApplication, NSEvent, NSView, NSWindow};
+                        NSString, NSUInteger, NSArray};
+use cocoa::appkit::{self, NSApplication, NSEvent, NSView, NSWindow, NSLayoutConstraint, NSLayoutDimension};
 
 use core_graphics::display::{CGAssociateMouseAndMouseCursorPosition, CGMainDisplayID, CGDisplayPixelsHigh, CGWarpMouseCursorPosition};
 
@@ -269,10 +269,6 @@ impl Window {
                pl_attribs: &PlatformSpecificWindowBuilderAttributes)
                -> Result<Window, CreationError>
     {
-        // not implemented
-        assert!(win_attribs.min_dimensions.is_none());
-        assert!(win_attribs.max_dimensions.is_none());
-
         // let app = match Window::create_app() {
         let app = match Window::create_app(pl_attribs.activation_policy) {
             Some(app) => app,
@@ -300,6 +296,24 @@ impl Window {
             } else {
                 window.makeKeyWindow();
             }
+
+            let mut constraints = vec![];
+            if let Some((width, height)) = win_attribs.min_dimensions {
+                constraints.extend_from_slice(&[
+                    view.widthAnchor().constraintGreaterThanOrEqualToConstant(width.into()),
+                    view.heightAnchor().constraintGreaterThanOrEqualToConstant(height.into()),
+                ]);
+            }
+            if let Some((width, height)) = win_attribs.max_dimensions {
+                constraints.extend_from_slice(&[
+                    view.widthAnchor().constraintLessThanOrEqualToConstant(width.into()),
+                    view.heightAnchor().constraintLessThanOrEqualToConstant(height.into()),
+                ]);
+            }
+            if !constraints.is_empty() {
+                let constraints_nsarray = NSArray::arrayWithObjects(nil, &constraints);
+                NSLayoutConstraint::activateConstraints(nil, constraints_nsarray);
+            }
         }
 
         let ds = DelegateState {