The only viable fix to this is to get rid of SNAP all together. "I'm from the government and I'm here to help" is a warning. When you pass off your responsibility to make sure your neighbors have something to eat to the government, you create the very source of disdain for the poor on display in this thread. When you have to know whether your neighbors are hungry or not, you suddenly become much more invested in their lives. This is why rich and poor were to live together under the law of Moses.
The simple truth is that calories are incredibly cheap. But people are also incredibly lazy. I say this as a fairly lazy person myself. But really, for $2-3/day you can get someone 2000 calories. Unless they work in construction or some other physical job, that's plenty. Even if they need 4000 cal/day, which is what I'd expect for manual labor at a construction site, that's only $4/day. Nutrition is a concern, you can't just give them bread, milk, and oil and call it good. A multivitamin isn't going to pick up the slack. The point is, it's INCREDIBLY cheap to feed people. For reference, the average SNAP benefit is about $6.18 per day per person. So that's $2/day of waste or preference, compared to what should work. Or, said differently, by having the government provide for their needs, every 3 people who get fed deprive one person of food.
We are all called, individually, to make sure the needs of the poor are taken care of. When I was a kid, I helped an old man in my neighborhood drive around to the local grocery stores and pass out all the expired food that was going to be thrown out (stuff that was still good, like boxed juices, or yogurt; it was just passed its 'best by' date). Grocery stores near me no longer allow that to happen for legal liability reasons.