This is unexpected since svg is supposed to be scalable. Another problem is that svg background is not transparent - it takes the background color from the default face. Like on the screenshot above, the unscaled image in the buffer has the default brown background, and transparent svg button on the grey tab-bar takes the same background. PS: Tried out with this code: (defvar tab-bar-button-close (let ((svg (svg-create 33 33 :stroke-width 3 :stroke-color "black" :fill-color "none"))) (svg-circle svg 16 16 12) (svg-line svg 10 10 22 22) (svg-line svg 10 22 22 10) (propertize "x" 'display (svg-image svg :max-width 9 :max-height 9 :margin '(2 . 0) :ascent 'center))) "Button for closing the tab.")