In css change body {} to html {}, so background image would be assigned to html. Add height: 100% to html.
Then move #page’s css to body, so fixed width, margin:0 auto and white background would be assigned to body. Add min-height: 100%; position: relative; to body.
Remove old <div id=”page”>, you don’t need that wrapper because body is now your wrapper.
Move <div id=”footer”> out of #columns, so it would be right before </body>. Add position: absolute; bottom: 0; left: 0; right: 0; to #footer
Then add margin-bottom: 35px to #columns and add a clearing div to where #footer used to be.
I don’t understand what you mean by “change body {} to html {}”. Also, I’m not very good at putting your words to code.
Would you be kind enough to post that as a code snippet?