diff --git a/main.c b/main.c
index 53f206b..ad2d4a4 100644
--- a/main.c
+++ b/main.c
@@ -31,10 +31,12 @@
 
 void on_keypress(XEvent*);
 void on_configurenotify(XEvent*);
+void on_buttonpress(XEvent*);
 
 void update_title();
 
 static void (*handler[LASTEvent])(XEvent*) = {
+	[ButtonPress] = on_buttonpress,
 	[KeyPress] = on_keypress,
 	[ConfigureNotify] = on_configurenotify
 };
@@ -126,6 +128,31 @@ void cleanup() {
 	}
 }
 
+void on_buttonpress(XEvent *ev) {
+	int changed;
+	XButtonEvent *buttonevent;
+
+	changed = 0;
+	buttonevent = &ev->xbutton;
+
+	switch (buttonevent->button) {
+		case Button4:
+			changed = img_zoom_in(&img);
+			break;
+		case Button5:
+			changed = img_zoom_out(&img);
+			break;
+		default:
+			return;
+	}
+
+	if (changed) {
+		img_render(&img, &win);
+		update_title();
+		timeout = 0;
+	}
+}
+
 void on_keypress(XEvent *ev) {
 	char key;
 	KeySym keysym;
diff --git a/window.c b/window.c
index 516f862..e1b8ee7 100644
--- a/window.c
+++ b/window.c
@@ -69,7 +69,7 @@ void win_open(win_t *win) {
 		DIE("could not create window");
 	
 	XSelectInput(e->dpy, win->xwin,
-	             StructureNotifyMask | KeyPressMask);
+	             StructureNotifyMask | KeyPressMask | ButtonPressMask);
 
 	bgc = XCreateGC(e->dpy, win->xwin, 0, None);