diff --git a/modules/ui/pixel-scroll/README.org b/modules/ui/pixel-scroll/README.org
new file mode 100644
index 0000000..f750ff4
--- /dev/null
+++ b/modules/ui/pixel-scroll/README.org
@@ -0,0 +1,18 @@
+#+TITLE:   ui/pixel-scroll
+#+DATE:    December 11, 2021
+#+SINCE:   v3.0
+#+STARTUP: inlineimages
+
+* Table of Contents :TOC_3:noexport:
+- [[#description][Description]]
+  - [[#module-flags][Module Flags]]
+  - [[#plugins][Plugins]]
+
+* Description
+This module enables pixel-based smooth scrolling.
+
+** Module Flags
+This module provides no flags.
+
+** Plugins
++ [[https://github.com/io12/good-scroll.el][good-scroll]] (emacs-major-version < 29 and not emacs-mac)
diff --git a/modules/ui/pixel-scroll/config.el b/modules/ui/pixel-scroll/config.el
new file mode 100644
index 0000000..f0e4970
--- /dev/null
+++ b/modules/ui/pixel-scroll/config.el
@@ -0,0 +1,9 @@
+;;; ui/pixel-scroll/config.el -*- lexical-binding: t; -*-
+
+(if (boundp 'mac-mouse-wheel-smooth-scroll)
+  (setq  mac-mouse-wheel-smooth-scroll t)
+  (if (> emacs-major-version 28)
+    (pixel-scroll-precision-mode)
+    (use-package! good-scroll
+      :config
+      (good-scroll-mode 1))))
diff --git a/modules/ui/pixel-scroll/packages.el b/modules/ui/pixel-scroll/packages.el
new file mode 100644
index 0000000..bcfd20f
--- /dev/null
+++ b/modules/ui/pixel-scroll/packages.el
@@ -0,0 +1,5 @@
+;; -*- no-byte-compile: t; -*-
+;;; ui/pixel-scroll/packages.el
+
+(when (not (or (> emacs-major-version 28)  (boundp 'mac-mouse-wheel-smooth-scroll)))
+  (package! good-scroll :pin "8530d6697b15e0"))