                        width
                        height]
   (log "surfaceChanged")
-  (let [new-bitmap
-        (if-let [interm-bitmap (get-in @this [:draw-state :intermediate-bitmap])]
-          (Bitmap/createScaledBitmap interm-bitmap
-                                     width
-                                     height
-                                     true)
+  (let [interm-bitmap ^Bitmap (get-in @this [:draw-state :intermediate-bitmap])
+        use-old-bitmap? (and (not (nil? interm-bitmap))
+                             (= width (.getWidth interm-bitmap))
+                             (= height (.getHeight interm-bitmap)))
+        new-bitmap
+        (if use-old-bitmap?
+          interm-bitmap
           (Bitmap/createBitmap width height
                                Bitmap$Config/ARGB_8888))
         canvas (Canvas. new-bitmap)]

                                onDestroy superOnDestroy
                                onBackPressed superOnBackPressed
                                onActivityResult superOnActivityResult
                                onSaveInstanceState superOnSaveInstanceState
                                onRestoreInstanceState superOnRestoreInstanceState}
              :state ^{:tag ActivityState} state
              :init init
              :constructors {[] []})

           :surface-available? true
           :intermediate-bitmap new-bitmap
           :draw-canvas canvas)
    (when-not use-old-bitmap?
      (redraw-indermed-bitmap this))
    (draw-scene this)))

(defn -surfaceCreated [^org.turtle.geometry.TurtleGraphics this
