If the loop is inside the event structure, you don't need an event to stop it. Just place the terminal of the stop button inside the while loop and "boolean or" it to the existing termination condition. The loop will stop if either goes true (assumes loop is set to stop if true).
The FFT does not shift anything. Make sure you know the convention how the fft data is arranged. LabVIEW fft output is nyquist centered, beginning with the DC component. For even numbered arrays, the highest frequency shows up only once. If you still think something is wrong, please attach an example.