shell: Update bindings to conform to pointer axis protocol

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
diff --git a/src/shell.c b/src/shell.c
index f9aa546..cef4011 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1866,9 +1866,10 @@
 	}
 	wl_list_insert(es->geometry.transformation_list.prev,
 		       &shsurf->popup.parent_transform.link);
-	weston_surface_set_position(es, shsurf->popup.x, shsurf->popup.y);
 
 	shsurf->popup.initial_up = 0;
+	weston_surface_set_position(es, shsurf->popup.x, shsurf->popup.y);
+	weston_surface_update_transform(es);
 
 	/* We don't require the grab to still be active, but if another
 	 * grab has started in the meantime, we end the popup now. */
@@ -2367,7 +2368,7 @@
 surface_opacity_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
 			wl_fixed_t value, void *data)
 {
-	float step = 0.05;
+	float step = 0.005;
 	struct shell_surface *shsurf;
 	struct weston_surface *surface =
 		(struct weston_surface *) seat->pointer->focus;
@@ -2379,7 +2380,7 @@
 	if (!shsurf)
 		return;
 
-	surface->alpha += wl_fixed_to_double(value) * step;
+	surface->alpha -= wl_fixed_to_double(value) * step;
 
 	if (surface->alpha > 1.0)
 		surface->alpha = 1.0;
@@ -2409,8 +2410,9 @@
 			else if (key == KEY_PAGEDOWN)
 				increment = -output->zoom.increment;
 			else if (axis == WL_POINTER_AXIS_VERTICAL_SCROLL)
+				/* For every pixel zoom 20th of a step */
 				increment = output->zoom.increment *
-					    wl_fixed_to_double(value);
+					    -wl_fixed_to_double(value) / 20.0;
 			else
 				increment = 0;