Prueba a envolverlo todo en un contenedor y darle un display flex para centrar el círculo. Parece que es el translate lo que te está dando problemas.
    
Código CSS:
Ver original.contenedor {
  position:absolute;
  display:flex;
  width:100%;
  height:100%; 
}
div#circulo {
  margin:auto;
    width:250px; 
    height:200px;   
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-animation-name: opacidad, giro;
    -webkit-animation-duration: 2s, 2s;
    -moz-animation-name: opacidad, giro;
    -moz-animation-duration: 2s, 2s;
    animation-name: opacidad, giro; 
    animation-duration: 2s, 2s;     
}
 
@-webkit-keyframes opacidad {
    from { -webkit-opacity: 0;}
    to   { -webkit-opacity: 1;}
}
 
@-moz-keyframes opacidad {
    from { -moz-opacity: 0;}
    to   { -moz-opacity: 1;}
} 
 
@-webkit-keyframes giro {
    from { -webkit-transform: rotate(0turn);} 
    to   { -webkit-transform: rotate(15turn);}
}
 
@-moz-keyframes giro {
    from { -moz-transform: rotate(0turn);}
    to   { -moz-transform: rotate(15turn);}
}
 
div#circulo:hover {
   opacity: 0.9;
   transform: scale(1.1);
}