                (/= text-scale-mode-amount 0))
       (text-scale-set 0)
       (setq success t))
-    (when (doom-adjust-font-size nil)
-      (setq success t))
+    (cond (doom-big-font-mode
+           (message "Disabling `doom-big-font-mode'")
+           (doom-big-font-mode -1)
+           (setq success t))
+          ((doom-adjust-font-size nil)
+           (setq success t)))
     (unless success
       (user-error "The font hasn't been resized"))))
 
 ;;;###autoload
 (define-minor-mode doom-big-font-mode
-  "A global mode that resizes the font, for streams, screen-sharing and
-presentations.
+  "Globally resizes your fonts for streams, screen-sharing or presentations.
 
-This uses `doom/increase-font-size' under the hood, and enlargens the font by
-`doom-big-font-increment'."
+Uses `doom-big-font' if its set, otherwise uses `doom-font' (falling back to
+your system font).
+
+Also resizees `doom-variable-pitch-font' and `doom-serif-font'."
   :init-value nil
   :lighter " BIG"
   :global t
-  (unless doom-font
-    (or (setq doom-font (face-attribute 'default :font))
-        (user-error "`doom-font' must be set to a valid font")))
   (if doom-big-font
-      (let ((font (if doom-big-font-mode doom-big-font doom-font)))
-        (set-frame-font font 'keep-size t)
-        (setf (alist-get 'font default-frame-alist)
-              (cond ((stringp doom-font) font)
-                    ((fontp font) (font-xlfd-name font))
-                    ((signal 'wrong-type-argument (list '(fontp stringp)
-                                                        font))))))
-    (doom-adjust-font-size
-     (and doom-big-font-mode
-          (integerp doom-big-font-increment)
-          (/= doom-big-font-increment 0)
-          doom-big-font-increment))))
+      ;; Use `doom-big-font' in lieu of `doom-font'
+      (doom-adjust-font-size
+       (and doom-big-font-mode
+            (aref (x-decompose-font-name (doom--font2xlfd font))
+                  xlfd-regexp-pixelsize-subnum))
+       t `((doom-font . ,doom-big-font)))
+    ;; Resize the current font
+    (doom-adjust-font-size (if doom-big-font-mode doom-big-font-increment))))


;;;###autoload
(defvar doom-big-font nil
  "The font to use for `doom-big-font-mode'. If nil, `doom-font' will be used,
scaled up by `doom-big-font-increment'. See `doom-font' for details on
acceptable values for this variable.")

;;;###autoload
(defvar doom-big-font-increment 4

  (doom-init-fonts-h 'reload))

;;;###autoload
(defun doom/increase-font-size (count &optional increment)
  "Enlargens the font size across the current and child frames."
  (interactive "p")
  (doom-adjust-font-size (* count (or increment doom-font-increment))))

;;;###autoload
(defun doom/decrease-font-size (count &optional increment)
  "Shrinks the font size across the current and child frames."
  (interactive "p")
  (doom-adjust-font-size (* (- count) (or increment doom-font-increment))))

;;;###autoload
(defun doom/reset-font-size ()
