Tolerance on the watchdog timer's oscillator is very poor. I'm not surprised that it's more than 10% out. It's not meant to be a precision timer, it's just meant to be a failsafe that can reset the program if it gets stuck in an infinite loop.
If you want anything resembling good timing, you need an RTC module.
I wanna thank you all guys for your replies. It seems that the real problem was a loose wire the gave power to the atmega328p. The system now works great just missing 1 minute or 2 which is fine and i hope it will keep it that way :). If not the only solution is what you all guys said and will go for an RTC.
Thank you all again.