diff --git a/Yesod/Default/Config.hs b/Yesod/Default/Config.hs
--- a/Yesod/Default/Config.hs
+++ b/Yesod/Default/Config.hs
@@ -181,7 +181,17 @@
 
     let host    = fromString $ T.unpack $ fromMaybe "*" $ lookupScalar "host"    m
     mport <- parseMonad (\x -> x .: "port") m
-    let approot = fromMaybe "" $ lookupScalar "approot" m
+    let approot' = fromMaybe "" $ lookupScalar "approot" m
+
+    -- Handle the DISPLAY_PORT environment variable for yesod devel
+    approot <-
+        case T.stripSuffix ":3000" approot' of
+            Nothing -> return approot'
+            Just prefix -> do
+                envVars <- getEnvironment
+                case lookup "DISPLAY_PORT" envVars of
+                    Nothing -> return approot'
+                    Just p -> return $ prefix `T.append` T.pack (':' : p)
 
     extra <- parseMonad (parseExtra env) m
 
diff --git a/yesod-default.cabal b/yesod-default.cabal
--- a/yesod-default.cabal
+++ b/yesod-default.cabal
@@ -1,5 +1,5 @@
 name:            yesod-default
-version:         1.1.2
+version:         1.1.3
 license:         MIT
 license-file:    LICENSE
 author:          Patrick Brisbin
