The Problem
On opening a PDF document in the Preview app, PDF widget annotations appear pixelated/rasterized. This problem exists with button, text, and choice widget subtypes. The pixelation becomes more apparent when zoomed in.
Expected Results
PDF widgets should appear sharp and smooth, without pixelation. In previous versions of the Preview app, widgets appear vector-based as expected.
Impact on User Experience
PDF widgets appear pixelated and inconsistent with text content in the same PDF document. Widgets do not look like elements of an interactive form but, instead, resemble low-quality embedded images.
Affected Apps/OSs:
Preview 11.0 (1147), as well as other apps that use PDFKit, on macOS Golden Gate 27.0 (26A428).
A similar problem appears to affect PDFKit on iOS 27.0 and iPadOS 27.0 as well.
Feedback/bug report: FB24843022
Thanks for these reports, and for the reproducer project. FB24843022 and FB24882188 are both on file.
If you are hitting this, a report of your own helps even where it looks like a duplicate. Yours carries what the existing ones cannot: the PDF itself, which annotation subtypes it uses, the OS versions and hardware you see it on, and whether the same file rendered correctly on an earlier release. A small project that reproduces the problem is the most useful form a report can take. Feedback Assistant is at https://developer.apple.com/feedback-assistant/. If you file a bug report, please post its number to this thread so I can follow up and make sure it is routed to the right place.
The widgets disappearing after toggling radio buttons and checkboxes, then saving and reopening, is worth a separate report. That is a different problem from the rasterization, and it will be tracked better on its own.
For annotations that do not need to stay interactive, writing the document with burnInAnnotationsOption (https://developer.apple.com/documentation/pdfkit/pdfdocumentwriteoption/burninannotationsoption) and displaying the result draws them as vector:
let options = [PDFDocumentWriteOption.burnInAnnotationsOption: true]
pdfView.document = document.dataRepresentation(options: options).flatMap(PDFDocument.init(data:))
That is no help for the form widgets this thread is about, since flattening a form removes the fields along with the pixelation, but it does apply to ink, stamps, and free text, which are affected too.