PSD looks to clean/continuous
I believe this is due to your choice of using a rectangular window, which has the best frequency resolution (1 bin) but worst spectral leakage (dynamic range). The spectral leakage is of the form of a $\textrm{sinc}$ function (with nulls at $1/T$ where $T$ is your window length in time), which has an envelope that rolls off very slowly ($1/f$) in frequency. What I believe you see above is the cumulative effect of the $\textrm{sinc}$ function in frequency due to your window convolving with each tone. 

My favorite window choice is the Kaiser window kaiser(N,beta), as you can control the precision and dynamic range trade directly through the use of beta. Beta factors I typically use range from 4 to 12 but you can experiment with it and see what works best for you.  

Try this to see the window performance (MATLAB / Octave) in the frequency domain (showing the main lobe width (precision) and sidelobe level (dynamic range).

wind = kaiser(N, beta)
freqz(wind)