But that anyway a little special with checkboxes, you usually don't have it checked by default.
Maybe I'm completely off but it's all a little tricky with checkboxes:
Since when a checkbox is not checked there will be no setting saved, it's "empty", not sent etc. So only when checked it will have an value of 1 saved to db. Defining a default value of 1 in construct will not save it to db, only if you save the first time, but then it will always be 1 cause you overwrite it when it's loading.
So what you trying to do is: if checkbox is empty/not set make it checked? How is this gonna work anyway when there's no value saved when unchecked? So making a default of checkbox to 1 will give hard time as when it's not checked. Not going to work.
Apart from that, contrary to what you say, for me the value, when checked and saved, is save in db no matter what the default is.
Instead make it inverse, by default it's on and disable it when checked.