Okay, I figured it out. It was because I was destroying the bitmaps after I loaded them to my buttons:

DeleteObject(hBmp);

Not doing this causes it to all look right, but I'll have to check to figure out if I have any cleanup responsibility, which I had just assumed I do.