My case is a bit unusual, so I had to work out my own collision detection. I managed to get it bouncing accurately by calculating a projection vector for each axis, and flipping the motion with the shorter projection.