157 and 159 are MAF sensor codes, new MAF doesn't mean "it works", new now means no one but you has tested it, lol.
But lets say it does work, then that leaves wiring or computer itself.
Computer is setting the 157 and 159 codes and engine is running poorly, so computer seems "sane", not saying it is, it is just acting like it is working by detecting a problem when there is really a problem.
I would check the MAF wires first, read here:
http://www.therangerstation.com/tech_library/CleanMAF.shtml
About 1/2 way down there are voltages you should see on each pair of wires, I use straight pins(sewing pins) to pierce wires to test while connected.
MAF sensor can only work correctly if all the air the engine is using passes thru it, this means the big air tube connecting MAF/air cleaner to the intake must be air tight, a leak in this tube allows unmetered air in which will through off computers fuel calculations.
177 is O2 sensor not switching, computer changes fuel mix a few times a second, and watches O2 sensor changing/switching from lean to rich and back again.
As an O2 sensor gets older or gets a carbon coating on it, from running rich, it will start to switch slower, computer is seeing this so set code 177.
But if engine is running too rich then O2 sensor could just be past its limit for rich.
O2 sensor has a range of .1volt to 1.0volt, .45volt is the sweet spot the computer tries to stay around, if you are running very rich then O2 could be at .9volt and up, since it doesn't go any higher computer sees this at O2 not switching as it should.
An O2 sensor on its own won't cause your described problem, MAF can.
I would first figure out the MAF issue, you may need to pull off the computer connector and see if moisture got in there, this will cause sensor voltage to read incorrectly, as will any corrosion on wire connections.
Fuel Pressure Regulator(FPR) on the fuel rail has a rubber diaphragm that is pulled open by engine vacuum, on the 4.0l it is at the front of the lower intake passenger side.
Remove this vacuum line and check it for fuel or fuel smell.
FPR diaphragm can crack and leak, then fuel is sucked into the intake via the vacuum line causing a rich mix and very poor MPG.
A fuel injector could be sticking open, dumping extra fuel in the intake.
Try a "Clear Flooded Engine" test
Turn key on
Press gas pedal to the floor and hold it down all the way(this shuts off fuel injectors, as soon as you let off the pedal injectors will start)
Crank engine
Engine should NOT fire at all, fuel injectors are shut off
If it fires then fuel is leaking in from somewhere, could be FPR or fuel injector
The fact it runs slightly better cold means you do have a rich fuel mix, the colder the air the denser it is, so more fuel is required.