position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Advantages:
minimal code
responsive: %, min-max width & height, resizable popup
no need of box-sizing for paddings
Caveats:
ie9+