I've noticed that if you set a background-image on the body, its position will be relative to the viewport rather than the body element, but only if there is not a background of some sort defined for the html element.

With this CSS, the image appears at the top left of the viewport.
Code css:
body {
  margin:auto;
  background:white url("minitree.png") no-repeat 1em 1em;
  width:800px;
}

With this, it appears correctly 1em from the top left of the body.
Code css:
html {
  background:white;
}
body {
  margin:auto;
  background:white url("minitree.png") no-repeat 1em 1em;
  width:800px;
}
Is this correct behaviour? IE8, Chrome and FF3.6 do the same thing. If so, what is the logic behind it?