\documentclass{article} \usepackage[paperwidth=90mm,paperheight=55mm,margin=0mm]{geometry} \usepackage{tikz,qrcode,graphicx,xcolor,lmodern} \usepackage{wrapfig} \usetikzlibrary{calc} % lets us position the white patch precisely % ------------------ settings you might tweak ------------------ \newcommand*{\iconfile}{android-chrome-512x512.png} \newcommand*{\iconwidth}{23mm} \newcommand*{\qrurl}{https://abaj.ai} \newcommand*{\qrsize}{23mm} % black square (module area) \newcommand*{\quiet}{1mm} % quiet zone each side ‹— now very small % -------------------------------------------------------------- \begin{document} % ---------------- FRONT ---------------- \begin{tikzpicture}[remember picture,overlay] \node at (current page.center) {\includegraphics[width=\iconwidth]{\iconfile}}; \end{tikzpicture} \clearpage % ---------------- BACK ----------------- \noindent \begin{minipage}{\textwidth} \fontsize{3}{3.5}\selectfont \ttfamily \color{gray!70} % Create invisible space for the QR code in the center \newlength{\qrtotalsize} \setlength{\qrtotalsize}{\qrsize} \addtolength{\qrtotalsize}{2\quiet} % Position the QR area as a float in the center \begin{wrapfigure}{r}{0.5\textwidth} \vspace{-\baselineskip} \centering \phantom{\rule{\qrtotalsize}{\qrtotalsize}} \vspace{-\baselineskip} \end{wrapfigure} \input{wallpaper.txt} \end{minipage} % Overlay the actual QR code \begin{tikzpicture}[remember picture,overlay] % solid white patch: side = qrsize + 2·quiet \path[fill=white] ($(current page.center)+(-\qrsize/2-\quiet,-\qrsize/2-\quiet)$) rectangle ($(current page.center)+(\qrsize/2+\quiet,\qrsize/2+\quiet)$); % QR code on top of the white patch \node at (current page.center) {\qrcode[height=\qrsize]{\qrurl}}; \end{tikzpicture} \end{document}