I do believe that your reasoning of "it's a big company and they made $XX profit so they won't miss the money" is a very invalid reason to keep it.
I do also believe that, from skimming your post, you had to spend a significant amount of extra time to deal with the ineptitude of this company. Also, as I understand, you don't know why it is that they ended up backdating the cancelation date. Clearly, this could be another mistake due to their poor performance. As someone pointed out, it could be that a reasonable person reviewed what had happened with you and made a reasonable decision to backdate the cancellation. So they paid you more money than you expected, and you don't know why.
It is indeed an interesting moral question. From what I understand of the situation, opening up communication and and further transaction with this company is likely to result in more headaches and sloppiness. You don't owe them that sloppiness. But do you owe them the money? I don't believe that you specifically owe them the money unless you know for a fact that they paid you that much completely unintentionally (and that you specifically know that they intended to pay you a different amount). We're not talking about a huge amount of money here. That, on it's own, doesn't make it ok. But it does factor in. Say they overpaid you by $0.03? Of course it's not worth dealing with getting it back to them. Given the potential headaches involved, I wouldn't believe it to be worth spending my time (in what would end up as charity for the company) to point out their mistake and get the money back to them (unless you would subtract your time spent with them converted into an hourly wage - something that, if they do want the money back, you can count on them not agreeing with)
If they contact you and say "we made a mistake, can we have the money back?" ok, now you do owe them the money. Then you should pay them. Otherwise, I think you're ok.
A very similar thing actually happened with me recently, although, with less of the reasons to keep the money than you have. I'm just waiting to see if/when they ask for it (or, more likely, just recharge my credit card for it). If a lot of time goes by and they never ask for it or charge me, I will probably contact them and point it out. I'm not in a hurry to do this. I have a lot other things that are higher priorities for me. Overall, I don't feel that I have a responsibility to spend my own time pointing out their mistakes for them.