.NET 4 finally has a solution to WPF's poor text rendering quality, but it is well-hidden. Set the following for every window:
TextOptions.TextFormattingMode="Display"
Default value is "Ideal" which is not at all what the name implies.
There are two other options in TextOptions, namely TextHintingMode and TextRenderingMode, but they both have sensible defaults.
I suggest forgoing the 1990's modal dialogs and instead implementing a control as an overlay (canvas+absolute positioning) with visibility tied to a boolean back in the VM. Closer to an ajax type control.
This is very useful:
<BooleanToVisibilityConverter x:Key="booltoVis" />
as in:
<my:ErrorControl Visibility="{Binding Path=ThereWasAnError, Mode=TwoWay, Converter={StaticResource booltoVis}, UpdateSourceTrigger=PropertyChanged}"/>
Here's how I have one implemented as a user control. Clicking on the 'x' closes the control in a line of code in the usercontrol's code behind. (Since I have my Views in an .exe and ViewModels in a dll, I don't feel bad about code that manipulates UI.)

Best Solution
Have a look at these articles on Code Project