Take the following .emacs file: (custom-set-faces '(default ((t (:inherit nil :height 110 :foundry "nil" :family "Source Code Pro"))))) (add-to-list 'face-font-rescale-alist (cons (font-spec :family "STIXGeneral") 0.95) t) Run emacs with no other customizations, using -Q -l . The font in the initial frame in the scratch buffer will be Source Code Pro, as expected. Open a new frame, the font in that frame will be some other font (in my case Helvetica), not the default one. During startup, if face-font-rescale-alist changes, emacs will mangle the default font setting, causing it to be wrong for all non-initial frames. I found the following workaround: ;; Workaround for emacs/lisp/startup.el:670 (defadvice frame-notice-user-settings (before my:rescale-alist) ;; (message "Set face-font-rescale-alist") (add-to-list 'face-font-rescale-alist (cons (font-spec :family "STIXGeneral") 0.95) t)) (ad-activate 'frame-notice-user-settings) for this particular bit of lisp/startup.el (line ~660) ;; FIXME: The user's init file may change ;; face-font-rescale-alist. However, the default face ;; already has an assigned font object, which does not take ;; face-font-rescale-alist into account. For such ;; situations, we ought to have a way to find all font ;; objects and regenerate them; currently we do not. As a ;; workaround, we specifically reset te default face's :font ;; attribute here. See bug#1785. (unless (eq face-font-rescale-alist old-face-font-rescale-alist) (set-face-attribute 'default nil :font (font-spec))) I am not sure how the default font should be regenerated in case it's affected by face-font-rescale-alist, but using (font-spec) is wrong because it resets user's own settings. I attached the output of report-emacs-bug.