no hay nada de extraño (exceptuando que el bloque style tiene que anidarse dentro de head),
simplemente es el comportamiento por defecto de los párrafos (
<p></p>), o usa
<div></div> en lugar de ellos
Código HTML:
Ver original body {text-align:center;margin: 0px;}
p {margin: 0px;} /*solución poco eficiente */
#principal {height:100%;width:800px;margin:0px auto;background:green;}