I can assume you're almost at the limits of the code space with your current code. The best option, I reckon, to get reasonably good control with your existing setup would be to try PI control. As it is, you are using the PWM function. Just compute the proportional output to get a smoother control.
Modify your check routine so that the PWM function outputs 255 when far lower than the setpoint, 0 when at it. Now, to compensate the offset of the temperature, you add the integral correction over time. This can be achieved quite easily with integer math alone.

A typical P controller pseudo code
Band con 10 ' this decides the band around SetPoint in which you want proportional control

if Temp < SetPoint-Band then
PWMout = 255 ' full heat
else
if Temp > Setpoint+Band then
PWMout = 0 ' full off
else
' within band, do Proportional heating
Error = SetPoint+Band-Temp ' you want to get the bigger numbers for temp < sv
PWMout = (Error*255)/(2*Band) ' get an output from 255 to 0 over the band from SV-Band to SV+Band, 50% at SV
endif
endif

Adding integral is relatively easy too. You just need a variable to adjust the error over time. Or use a button to snapshot the error and add it as an offset.

IntErr var byte

IntErr = IntErr+(Error/IntTime) ' integrate the error over time

PWMout = PWMout + IntErr
if PWMout > 255 then PWMout = 255 ' limit to usable PWM range

PWM Mosfet, PWMout, 300 ' transfer to the mosfet

Just some ideas.