I think this is due to the fact that IE7 and IE6 do not interpret your properties overflow-xand overflow-ycorrectly:
#content_box {
float:left;
height:456px;
margin-left:20px;
overflow-x:hidden;
overflow-y:scroll;
this is easy to explain for IE6: it just doesn't know these attributes. As for why it doesn't work in IE7, maybe the explanation is here (It's too hard for me to understand, I haven't eaten lunch yet).
I think it might work (after a very superficial study of your code, do not file me if it is not) to introduce an additional container divwithout a set width. This will automatically adjust any elements width: 100%inside it in such a way as to prevent overflow. (I guess why this is a problem, first of all, problems with the box combined with margin-left: 20px, right?)