If you do things too well, there will be no impetus for management to change. If you don't have time to correctly fix the problems you are just continuing your pain. Many of those problems/hacks likely exist because the guy before you was trying to get them features as quickly as they wanted and it snowballed on him.
It will likely continue unless you can communicate with management. I personally speak in too much detail for non-technical people and this has been a huge hindrance. If you aren't speaking on their level of understanding, you're Charlie Brown's teacher.
I'm not saying don't put in extra time to fix things. I am saying if they are going to keep expecting you to work miracles, that it's abuse.
People undervalue technical work. You see someone building a house and you know that it is an actual object. It has 3 dimensions. It has running water and can withstand all sorts of weather. You have a visible, touchable result. With IT work, all your doing is typing in notepad or clicking on images to them. You're effectively building an iceberg.
To the non-technical, programs are anthropomorphic. The program thinks for itself and it reasons about a problem on its own. If you're consistently hearing "all you have to do is" after you've already explained what you have insufficient data in order to make a decision, you're not going to make them happy. They will forget your compromise and continue thinking in their terms without any basis in reality. In that case, run.