1st: Harmonics are folded back at sampling frequency from higher orders. if sampling and signal frequency do not have a least common multiple, they will not superpose. if your sampling freq. is like 10kHz and the signal is 50Hz they will.
The Theory is, the Fourier transform is from minus infinity to plus infinity (at least real signals are). But when digitized we quantise both amplitude (the ADC steps) and time (sampling period). Also we implicit multiply the signal with the dirac impulse (don't be hard on me, I haven't looked up the formulas for several years :-)). The fourier we do on the quantised signal is from 0 to some time X, which causes the fourier transform to produce mirrored results at half of the sampling frequency. And all these mirrored spectra are "folded" into the lower ones. So this effect is, because we use the fourier transform on quantised signals, while it is intended for not quantised signals. Note: the FFT is just a faster way to calculate Fourier on quantised signals - it doesn't introduce any further error.
So chances are there, you are seeing superposed harmonics.
This is why you need a analog low pass filter in the ADC frontend to suppress this effect. You can't resolve that in the digital domain.
2nd: if you just take the input signal from the ADC as it is, you implicit have applied a rectangular window. https://en.wikipedia.org/wiki/Window_function In the spectrum, the rectangular window appears as sin(x)/x function which will be seen as an envelope of your spectrum.
some other common window functions:
A nice List, I scanned more than 20 years ago for my diploma:
3nd: parts of your system will amplify different frequencies different. maybe there are some poles near some of the multiples of 50Hz. hard to tell whithout knowing what and where you are measuring.
So Your spectrum is a superposition of the real spectrum plus side effects, and you need to know these side effects and select measures which will reduce em. unfortunately each measure to reduce side effects will introduce another error on you spectrum, so you only can trade one error for another.