diff --git a/shiny/driver/gldriver/x11.c b/shiny/driver/gldriver/x11.c
index dcb583d..ee4827c 100644
--- a/shiny/driver/gldriver/x11.c
+++ b/shiny/driver/gldriver/x11.c
@@ -10,9 +10,9 @@
 #include <stdlib.h>
 #include <string.h>
 
+Atom net_wm_name;
 Atom utf8_string;
 Atom wm_delete_window;
-Atom wm_name;
 Atom wm_protocols;
 Atom wm_take_focus;
 
@@ -131,9 +131,9 @@
 		exit(1);
 	}
 
+	net_wm_name = XInternAtom(x_dpy, "_NET_WM_NAME", False);
 	utf8_string = XInternAtom(x_dpy, "UTF8_STRING", False);
 	wm_delete_window = XInternAtom(x_dpy, "WM_DELETE_WINDOW", False);
-	wm_name = XInternAtom(x_dpy, "WM_NAME", False);
 	wm_protocols = XInternAtom(x_dpy, "WM_PROTOCOLS", False);
 	wm_take_focus = XInternAtom(x_dpy, "WM_TAKE_FOCUS", False);
 
@@ -260,7 +260,7 @@
 	XSetWMProtocols(x_dpy, win, atoms, 2);
 
 	XSetStandardProperties(x_dpy, win, "", "App", None, (char **)NULL, 0, &sizehints);
-	XChangeProperty(x_dpy, win, wm_name, utf8_string, 8, PropModeReplace, title, title_len);
+	XChangeProperty(x_dpy, win, net_wm_name, utf8_string, 8, PropModeReplace, title, title_len);
 
 	return win;
 }
diff --git a/shiny/driver/gldriver/x11.go b/shiny/driver/gldriver/x11.go
index 0f0e376..b32cbc7 100644
--- a/shiny/driver/gldriver/x11.go
+++ b/shiny/driver/gldriver/x11.go
@@ -19,7 +19,7 @@
 void makeCurrent(uintptr_t ctx);
 void swapBuffers(uintptr_t ctx);
 void doCloseWindow(uintptr_t id);
-uintptr_t doNewWindow(int width, int height, char* title);
+uintptr_t doNewWindow(int width, int height, char* title, int title_len);
 uintptr_t doShowWindow(uintptr_t id);
 uintptr_t surfaceCreate();
 */
@@ -53,13 +53,14 @@
 func newWindow(opts *screen.NewWindowOptions) (uintptr, error) {
 	width, height := optsSize(opts)
 
-	title := C.CString(opts.GetTitle())
-	defer C.free(unsafe.Pointer(title))
+	title := opts.GetTitle()
+	ctitle := C.CString(title)
+	defer C.free(unsafe.Pointer(ctitle))
 
 	retc := make(chan uintptr)
 	uic <- uiClosure{
 		f: func() uintptr {
-			return uintptr(C.doNewWindow(C.int(width), C.int(height), title, C.int(len(title))))
+			return uintptr(C.doNewWindow(C.int(width), C.int(height), ctitle, C.int(len(title))))
 		},
 		retc: retc,
 	}
diff --git a/shiny/driver/x11driver/screen.go b/shiny/driver/x11driver/screen.go
index e3f01af..755c5a6 100644
--- a/shiny/driver/x11driver/screen.go
+++ b/shiny/driver/x11driver/screen.go
@@ -33,6 +33,7 @@
 	xsi     *xproto.ScreenInfo
 	keysyms x11key.KeysymTable
 
+	atomNETWMName      xproto.Atom
 	atomUTF8String     xproto.Atom
 	atomWMDeleteWindow xproto.Atom
 	atomWMProtocols    xproto.Atom
@@ -424,7 +425,7 @@
 	s.setProperty(xw, s.atomWMProtocols, s.atomWMDeleteWindow, s.atomWMTakeFocus)
 
 	title := []byte(opts.GetTitle())
-	xproto.ChangeProperty(s.xc, xproto.PropModeReplace, xw, xproto.AtomWmName, s.atomUTF8String, 8, uint32(len(title)), title)
+	xproto.ChangeProperty(s.xc, xproto.PropModeReplace, xw, s.atomNETWMName, s.atomUTF8String, 8, uint32(len(title)), title)
 
 	xproto.CreateGC(s.xc, xg, xproto.Drawable(xw), 0, nil)
 	render.CreatePicture(s.xc, xp, xproto.Drawable(xw), pictformat, 0, nil)
@@ -434,6 +435,10 @@
 }
 
 func (s *screenImpl) initAtoms() (err error) {
+	s.atomNETWMName, err = s.internAtom("_NET_WM_NAME")
+	if err != nil {
+		return err
+	}
 	s.atomUTF8String, err = s.internAtom("UTF8_STRING")
 	if err != nil {
 		return err
