Можно попробовать сделать так:
left: 50%;
transform: translateX(-50%);
https://jsfiddle.net/948hbquy/4/
Но если у вас ширина блока нечетного количества пикселей, то его размоет. Второе вариант - черный блок завернуть в другой блок и уже ему делать абсолютное позиционирование. А черный отцентрировать через
margin: 0 auto;