Bug reported: "PNGs with a transparent background are showing a checkerboard on the navbar." Root cause wasn't CSS, caching, or the crop pipeline — the uploaded PNG files themselves had no alpha channel. When an image editor exports a transparent logo with the transparency-preview checkerboard still visible in the export, the checkerboard becomes solid pixels in the PNG. The file opens fine everywhere, but it renders as a literal checkerboard on top of any navbar background.
Diagnosis from the branding asset directory: both currently-configured logos (b97eb23e… dark and b98b02e2… light) are PNG color-type 2 (RGB, no alpha). The earlier logo 9729c941… uploaded on the same day is color-type 6 (RGBA) — alpha preserved. Ruling out a server bug confirmed: crop pass was tested against a known-alpha PNG and came out intact. The flattened checkerboard was in the source files.
Prevention: AdminBrandingController::pngAlphaWarning() now reads the PNG IHDR directly after every logo upload and flashes a warning when the file is RGB / greyscale / palette-without-tRNS:
Light-theme logo uploaded, but this PNG has no transparency — your image
editor flattened the checkerboard preview into solid pixels. Re-export
with alpha preserved ("PNG-24 with transparency" / "Export As → PNG →
Save Transparent Pixels") and upload again.
Admin-branding page hints updated to mention the export caveat up front so it's visible before the first upload, not only after.
The warning is advisory — the file is still saved and the config still updates, because the flattened PNG may be intentional in some designs. The admin just sees the warning alongside the normal success toast and can decide whether to re-export and re-upload.
Implementation detail: color-type is read from PNG byte 25 directly rather than through getimagesize() or imagecolortransparent(), both of which report GD's in-memory view and can return stale data after a crop pass.
. __ ____ ___ ____ _ _
/ /_| ___| / _ \___ \(_)___| |__
| '_ \___ \| | | |__) | / __| '_ \
| (_) |__) | |_| / __/| \__ \ | | |
\___/____/ \___/_____|_|___/_| |_|
D2sk - Sysop