(update-page-numbers frame))
 
 (defmethod display-score ((frame gsharp) pane)
-  (let* ((buffer (buffer (view pane))))
-    (score-pane:with-score-pane pane
-      (draw-buffer pane buffer (current-cursor)
-                   (left-margin buffer) 100)
-      (draw-the-cursor pane (current-cursor) (cursor-element (current-cursor))
-                       (last-note (input-state *application-frame*)))
-      (multiple-value-bind (minx miny maxx maxy)
-          (bounding-rectangle* (stream-output-history pane))
-        (declare (ignore minx maxx))
-        (change-space-requirements pane :height (+ maxy miny))))))
+  (let* ((buffer (buffer (view pane)))
+         (zoom (gsharp-buffer::zoom-level buffer)))
+    (with-drawing-options (pane :transformation (make-scaling-transformation zoom zoom))
+      (score-pane:with-score-pane pane
+        (draw-buffer pane buffer (current-cursor)
+                     (left-margin buffer) 100)
+        (draw-the-cursor pane (current-cursor) (cursor-element (current-cursor))
+                         (last-note (input-state *application-frame*)))
+        (multiple-value-bind (minx miny maxx maxy)
+            (bounding-rectangle* (stream-output-history pane))
+          (declare (ignore minx maxx))
+          (change-space-requirements pane :height (+ maxy miny)))))))
 
 (defmethod window-clear ((pane score-pane:score-pane))
   (let ((output-history (stream-output-history pane)))
@@ -613,13 +615,22 @@ Prints the results in the minibuffer." 
          (result (format nil "~:[; No values~;~:*~{~S~^,~}~]" values)))
     (display-message result)))
 
-(define-gsharp-command (com-zoom-in :name t) ()
-  (incf (gsharp-buffer::rastral-size (buffer (current-cursor)))))
-(define-gsharp-command (com-zoom-out :name t) ()
-  (unless (<= (gsharp-buffer::rastral-size (buffer (current-cursor))) 6)
-    (decf (gsharp-buffer::rastral-size (buffer (current-cursor))))))
-(set-key 'com-zoom-in 'global-gsharp-table '(#\+))
-(set-key 'com-zoom-out 'global-gsharp-table '(#\-))
+(define-gsharp-command (com-raster+ :name t) ()
+  (let ((score-pane (get-main-score-pane)))
+    (incf (gsharp-buffer::rastral-size (buffer (current-cursor))))
+    (redisplay-frame-pane *application-frame* score-pane :force-p t)))
+(define-gsharp-command (com-raster- :name t) ()
+  (let ((score-pane (get-main-score-pane)))
+    (unless (<= (gsharp-buffer::rastral-size (buffer (current-cursor))) 6)
+      (decf (gsharp-buffer::rastral-size (buffer (current-cursor))))
+      (redisplay-frame-pane *application-frame* score-pane :force-p t))))
+
+(defun get-main-score-pane ()
+  (find "score" 
+        (frame-current-panes *application-frame*)
+        :key #'pane-name
+        :test #'string=))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; note insertion commands
@@ -1675,3 +1686,11 @@ Prints the results in the minibuffer." 
     ()
   (com-write-buffer (gui-get-pathname :extensions '("gsh" "mxml" "xml"))))
 
+(define-gsharp-command (com-zoom-in :name t :menu t)
+    ()
+  (unless (<= (gsharp-buffer::zoom-level (buffer (current-cursor))) 64)
+    (incf (gsharp-buffer::zoom-level (buffer (current-cursor))) 1/4)))
+(define-gsharp-command (com-zoom-out :name t :menu t)
+    ()
+  (unless (<= (gsharp-buffer::zoom-level (buffer (current-cursor))) 1/4)
+    (decf (gsharp-buffer::zoom-level (buffer (current-cursor))) 1/4)))