diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,7 +1,16 @@
 * Hackage: <http://hackage.haskell.org/package/crackNum>
 * GitHub:  <http://github.com/LeventErkok/crackNum/>
 
-* Latest Hackage released version: 3.21, 2026-08-16
+* Latest Hackage released version: 3.22, 2026-08-17
+
+### Version 3.22, 2026-08-17
+
+  * Fix text alignment in the Tcl/Tk GUI's entry fields. We asked for the `Courier`
+    font, which on X11 is an alias that typically resolves to Nimbus Mono PS. Its
+    ascent/descent split is lopsided (9/6 at size 11), and since an entry centers
+    text on the linespace, the glyphs ended up hugging the top of the box with a
+    large gap underneath. We now pick the first monospaced family that is actually
+    installed, preferring ones with sane metrics.
 
 ### Version 3.21, 2026-08-16
 
diff --git a/GUI/tclGUI/crackNum.tcl b/GUI/tclGUI/crackNum.tcl
--- a/GUI/tclGUI/crackNum.tcl
+++ b/GUI/tclGUI/crackNum.tcl
@@ -227,11 +227,29 @@
 }
 
 # ---------------------------------------------------------------------------
+# Font selection
+# ---------------------------------------------------------------------------
+# Pick a monospaced family with sane vertical metrics. Plain "Courier" is an
+# X11 alias that commonly resolves to Nimbus Mono PS, whose ascent/descent split
+# is badly lopsided (9/6 at size 11). Since an entry centers on the linespace,
+# that leaves the glyphs hugging the top of the box with a fat gap underneath.
+proc pickMonoFamily {} {
+    set installed {}
+    foreach f [font families] { lappend installed [string tolower $f] }
+    foreach want {"DejaVu Sans Mono" "Menlo" "Liberation Mono" "Consolas" "Courier New"} {
+        if {[lsearch -exact $installed [string tolower $want]] >= 0} { return $want }
+    }
+    return "Courier"
+}
+
+set MONO [pickMonoFamily]
+
+# ---------------------------------------------------------------------------
 # Font size helpers
 # ---------------------------------------------------------------------------
 proc applyFontSize {} {
-    global state
-    .output configure -font [list Courier $state(fontSize)]
+    global state MONO
+    .output configure -font [list $MONO $state(fontSize)]
 }
 
 proc zoomIn  {} { incr ::state(fontSize); applyFontSize }
@@ -314,7 +332,7 @@
 button .top.help -text "?" -command { showOutput $::WELCOME }
 pack .top.help -side left -padx 2
 
-entry .top.val -textvariable state(value) -font {Courier 11} -width 28
+entry .top.val -textvariable state(value) -font [list $MONO 11] -width 28
 pack .top.val -side right -padx {0 4}
 bind .top.val <Return> crack
 
@@ -398,7 +416,7 @@
 label .main.side.custom.bw.l -text "Total width:"
 pack  .main.side.custom.bw.l -side left
 entry .main.side.custom.bw.e -textvariable state(bitWidth) -width 6 -justify right \
-    -font {Courier 11}
+    -font [list $MONO 11]
 pack  .main.side.custom.bw.e -side right
 bind  .main.side.custom.bw.e <Return> crack
 
@@ -407,7 +425,7 @@
 label .main.side.custom.ew.l -text "Exponent width:"
 pack  .main.side.custom.ew.l -side left
 entry .main.side.custom.ew.e -textvariable state(expWidth) -width 6 -justify right \
-    -font {Courier 11}
+    -font [list $MONO 11]
 pack  .main.side.custom.ew.e -side right
 bind  .main.side.custom.ew.e <Return> crack
 
@@ -421,7 +439,7 @@
 pack .main.out -side left -fill both -expand yes
 
 text .output -state disabled -wrap none \
-    -font [list Courier $state(fontSize)] \
+    -font [list $MONO $state(fontSize)] \
     -padx 8 -pady 8 \
     -xscrollcommand {.main.out.sx set} \
     -yscrollcommand {.main.out.sy set}
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## Decode/Encode Integers, Words, and IEE754 Floats
+## Decode/Encode Integers, Words, and IEEE754 and other float formats
 
 On Hackage: http://hackage.haskell.org/package/crackNum
 
@@ -45,7 +45,7 @@
 $ crackNum -fdp 0xfc00 abc1 7F80 0001
 ```
 
-### Example: Decode a custom (2+3) IEEE754 float from memory-layout
+### Example: Decode a custom (2+3) float from memory-layout
 ```
 $ crackNum -f2+3 0b10011
 Satisfiable. Model:
diff --git a/crackNum.cabal b/crackNum.cabal
--- a/crackNum.cabal
+++ b/crackNum.cabal
@@ -1,6 +1,6 @@
 Cabal-version      : 2.2
 Name               : crackNum
-Version            : 3.21
+Version            : 3.22
 Synopsis           : Crack various integer and floating-point data formats
 Description        : Crack IEEE-754 and other float formats and arbitrary sized words and integers, showing the layout.
                      .
