Pixel perfect can only happen as a result of meticulous care from the moment you generate the asset through import and setup, prefabs (no scaling, no rotating), to setting up the scene, the resolutions, the camera, literally every single step has to happen as if you were preserving fingerprints at the scene of a crime.
Every single number you choose, select, modify, or compute must be PERFECT. If you slip even one part of that, miss even the tiniest detail, odds are you won’t have a pixel perfect game.
Every time you add an asset, change a process, do anything, you must retest and requalify every step of the process you used. If you don’t, you run the risk of moving ahead with a defect in your setup or your assumptions that will cause you to make choices in other parts of the process that will never work with pixel perfect. The longer you move forward with a defective setup, the harder it will be for you to fix and understand the issues at hand.
Read the documentation and then TEST your understanding of the docs. If the docs say one thing, prove that you actually have a working understanding by both making it work, then changing something to break it, and verifying that you really do actually understand what is happening.
There is no substitute for this. Pay attention to detail and test after every single change until you understand all the parts that change and how they change and when. Use source control rigorously in order to back out unwanted changes that break your pixel perfect assumptions.
Not only that but pixel perfect means different things to everybody. Some people call low resolution games “pixel perfect.”
Good luck!