Thank you everyone for your suggestions - problem solved! Here's what I found out.
I am exclusively using styles, with very limited local styling.
All the Layer opacities were at 100% and set to Normal, so no problem there.
All style text opacities were 100%, no problem.
The text color was set to RGB #231F20. When I changed it to #000000 (black) or unchecked the text color, that helped.
Text outline was enabled (this is in the style settings, so assuming this is equivalent to Stroke) and set to 0.2 pt. When set to 0 pt or unchecked, that also helped.
Now the text on-screen is legible, and my test prints to paper look as I expected.
Thanks everyone again, I figured it was a "me" problem.