I attach a working version of the rewrite. New image-transform.el with transform api and UI. I rewrote some parts of image-mode, most interestingly by adding image-mode-auto-resize, which see. More work should be done - namespace cleanup; n/p/g should not reset the mode as it messes up user local setting and makes deriving modes dificult; support for multiple images per page etc. New keys in image-mode: + image-scale-adjust - image-scale-adjust 0 image-scale-adjust = image-scale-adjust B image-change-background [ image-rotate-left ] image-rotate-right o image-rotate r Prefix Command r f image-fit-to-window r h image-fit-to-window-height r s image-stretch-to-window r w image-fit-to-window-width T image-mode-show-thumbnails r stands for resize. A better fit wold be f but that one is already bound to image-next-frame for multi-frame images. Currently only internal imagemagick backend is implemented for things that are exposed at elisp level (:width :height :background :rotation). Convert backend will come latter. To illustrate the API try: (setq tt (create-image "/path/to/foo.png")) (image-transform tt :scale 200) ;in %, imagemagick convention (image-transform tt :scale 25) (insert-image (image-transform (copy-list tt) :resize '(500 . 500))) (insert-image (image-transform (copy-list tt) :resize 200)) (insert-image (image-transform (copy-list tt) :resize 'fit-width)) (insert-image (image-transform (copy-list tt) :resize 'fit-height)) (insert-image (image-transform (copy-list tt) :resize 'fit)) (insert-image (image-transform (copy-list tt) :resize 'fit-stretch)) (insert-image (image-transform (copy-list tt) :resize 'fit-if-large)) (insert-image (image-transform (copy-list tt) :resize 'fit :rotate 45)) (insert-image (image-transform (copy-list tt) :resize 'fit-height :rotate 60)) (insert-image (image-transform (copy-list tt) :background "pink")) I have changed insert-image to take an additional argument MAP to hook a transform keymap as local text-properties keymap for the image. With the following you should get all the transform keys listed above to work on the inserted image: (insert-image (image-transform (copy-list tt) :resize 'fit) nil nil nil image-transform-map) Would be nice if insert-image would hook a transform map by default. Then all modes that use insert-image can automatically provide transformations. But I couldn't think of a handy prefix for this map. I will be out for a week and will resume when I am back. In meanwhile suggestions are welcome. Vitalie