PatchMatch alone cannot fill a gradient, and more iterations will not help
Content-aware fill converged to a flat grey rectangle no matter how long it ran — and it was four times worse than the best possible flat fill. The fix was to stop searching for the part of the signal where matching carries no information.