It's very easy to get your gradient filled (3 clicks only)
Go to Filters ➤ Blur ➤ Linear Motion Blur, Angle at 0 (to be sure it's horizontal), Length > full (1000)
Do it 2 times because your image is quite big (Tip: just do a Ctrl+F for the second time, Ctrl+F will repeat the last used filter (Linear Motion Blur) without showing the filter's window)
Then go to Layer ➤ Transparency ➤ Threshold Alpha Value at 0 (completely opaque)
You're done
Perfect gradient, you cannot see a difference between the top (original) and the bottom layer (gradient filled)
Go to Filters ➤ Blur ➤ Linear Motion Blur, Angle at 0 (to be sure it's horizontal), Length > full (1000)
Do it 2 times because your image is quite big (Tip: just do a Ctrl+F for the second time, Ctrl+F will repeat the last used filter (Linear Motion Blur) without showing the filter's window)
Then go to Layer ➤ Transparency ➤ Threshold Alpha Value at 0 (completely opaque)
You're done

Perfect gradient, you cannot see a difference between the top (original) and the bottom layer (gradient filled)