Non devi usare i posizionamenti. L'alternativa e` cambiare modo di allineare/centrare, ma non credo che hai una dimestichezza sufficiente con i CSS per buttarti in una delle cose piu` complesse che ci sono (con vari effetti collaterali).

se tolgo il position:absolute mi centra nel centro ma perdo il riquadro e lo sfondo blu, sto provando con firefox 3.5
Allora potrebbe essere un problema di clear.
Prova ad aggiungere, subito prima del </div> del blocco #centra:
codice:
<div class="clear1"> &amp;nbsp; </div>

E nel CSS:
.clear1 {
  clear: both;
  width: 100%;
  height: 2px;
  color: red;
  line-height: 1px;   /* questo serve solo per correggere un baco di IE */
}
Dovrebbe metterti una riga rossa, ma dovrebbe anche far espandere il div in tutta la sua lunghezza.

Se funziona, puoi togliere il colore, e anche usare quanto consigliato in questo thread: [Pillola] FabClearing, un metodo crossbrowser alternativo per il clearing dei float; ma prima occorre verificare che sia quello il problema, e il codice di cui sopra serve proprio per tale verifica