The points outside the radius are complex and are ignored by ListDensityPlot
. From the documentation
holes will be left in the plot whenever there are elements that are
not real numbers
The jagged edges are caused by not having enough points. Try pts = 200
.
You can replace the complex values with 0 like this, but that does not do what you want because the color function is applied to those values.
sReal = Replace[S, _Complex -> 0, 2]