diff --git a/dwm.c b/dwm.c
index 6306bbd..44b9ef0 100644
--- a/dwm.c
+++ b/dwm.c
@@ -369,8 +369,8 @@ static void zoom(const Arg *arg);
 
 /* variables */
 static const char broken[] = "broken";
-static char stext[4096];
-static char rawstext[4096];
+static char stext[8192];
+static char rawstext[8192];
 
 static int screen;
 static int sw, sh;           /* X display screen geometry width, height */
@@ -2276,7 +2276,8 @@ unmanage(Client *c, int destroyed)
 		XSelectInput(dpy, c->win, NoEventMask);
 		XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
 		XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
-		setclientstate(c, WithdrawnState);
+		if (!HIDDEN(c))
+			setclientstate(c, WithdrawnState);
 		XSync(dpy, False);
 		XSetErrorHandler(xerror);
 		XUngrabServer(dpy);