A `position: fixed` element with `top: 0; left: 0` normally uses the viewport as its containing block. What is happening at the box-tree level when an ancestor with `transform: translateZ(0)` changes that?
.ancestor { transform: translateZ(0); }
.fixed-child { position: fixed; top: 0; left: 0; width: 50%; }