diff --git a/unicodedomino.sty b/unicodedomino.sty
index c9adb2d4ee1d1943dd5e0f2c92a302044276ce84..00d6b6faab44b68bc577b79d0b5ef30cb8041301 100644
--- a/unicodedomino.sty
+++ b/unicodedomino.sty
@@ -40,7 +40,9 @@
 
 % nicer printing of codepoint hex numbers, not strictly necessary
 \def\unicodedomino@codepoint#1{%
- \ifnum#1>65535%
+ \ifnum#1>1048575%
+  U-00%
+ \else\ifnum#1>65535%
   U-000%
  \else\ifnum#1>4095%
   U+%
@@ -48,7 +50,7 @@
   U+0%
  \else%
   U+00%
- \fi\fi\fi%
+ \fi\fi\fi\fi%
  \expandafter\UTFviii@hexnumber\expandafter{#1}%
 }%
 
@@ -85,17 +87,18 @@
 }%
 % expand all hex nybbles, zero-padded
 \def\unicodedomino@hex@ll#1{%
+ \ifnum#1<1048576 0.\fi%
  \ifnum#1<65536 0.\fi%
  \ifnum#1<4096 0.\fi%
  \ifnum#1<256 0.\fi%
  \expandafter\unicodedomino@hex@ne\expandafter{#1}%
 }%
 % call the appropriate box function
-\def\unicodedomino@hex@do#1.#2.#3.#4.#5.{%
- \ifnum#1>0%
-  \unicodedomino@box{0#1#2}{#3#4#5}%
+\def\unicodedomino@hex@do#1.#2.#3.#4.#5.#6.{%
+ \ifnum"#1#2=0%
+  \unicodedomino@box{#3#4}{#5#6}%
  \else%
-  \unicodedomino@box{#2#3}{#4#5}%
+  \unicodedomino@box{#1#2#3}{#4#5#6}%
  \fi%
 }%
 % split nybbles and pass on