diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index fd2ea0f..668d0c5 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -3773,7 +3773,7 @@
     border = std::make_unique<AnnotBorderBS>(obj1.getDict());
   }
 
-  updatedAppearanceStream.num = updatedAppearanceStream.gen = -1;
+  updatedAppearanceStream = Ref::INVALID();
 }
 
 LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type)
@@ -4100,9 +4100,7 @@
         if (forceZapfDingbats) {
           // We are forcing ZaDb but the font does not exist
           // so create a fake one
-          Ref r; // dummy Ref, it's not used at all in this codepath
-          r.num = -1;
-          r.gen = -1;
+          Ref r = Ref::INVALID(); // dummy Ref, it's not used at all in this codepath
           Dict *d = new Dict(xref);
           fontToFree = new Gfx8BitFont(xref, "ZaDb", r, new GooString("ZapfDingbats"), fontType1, r, d);
           delete d;
@@ -4908,7 +4906,7 @@
 {
   // If this the first time updateAppearanceStream() is called on this widget,
   // destroy the AP dictionary because we are going to create a new one.
-  if (updatedAppearanceStream.num == -1) {
+  if (updatedAppearanceStream == Ref::INVALID()) {
     invalidateAppearance(); // Delete AP dictionary and all referenced streams
   }
 
@@ -4928,7 +4926,7 @@
   // If this the first time updateAppearanceStream() is called on this widget,
   // create a new AP dictionary containing the new appearance stream.
   // Otherwise, just update the stream we had created previously.
-  if (updatedAppearanceStream.num == -1) {
+  if (updatedAppearanceStream == Ref::INVALID()) {
     // Write the appearance stream
     updatedAppearanceStream = xref->addIndirectObject(&obj1);
 
diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc
index 44282d9..db6f0b8 100644
--- a/poppler/GfxFont.cc
+++ b/poppler/GfxFont.cc
@@ -601,7 +601,7 @@
   }
 
   //----- embedded font
-  if (embFontID.num >= 0) {
+  if (embFontID != Ref::INVALID()) {
     embed = true;
     Object refObj(embFontID);
     Object embFontObj = refObj.fetch(xref);
@@ -823,7 +823,7 @@
   Object obj2 = obj1.fetch(xref);
   if (!obj2.isStream()) {
     error(errSyntaxError, -1, "Embedded font file is not a stream");
-    embFontID.num = -1;
+    embFontID = Ref::INVALID();
     *len = 0;
     return nullptr;
   }
@@ -1027,7 +1027,7 @@
 
   // for non-embedded fonts, don't trust the ascent/descent/bbox
   // values from the font descriptor
-  if (builtinFont && embFontID.num < 0) {
+  if (builtinFont && embFontID == Ref::INVALID()) {
     ascent = 0.001 * builtinFont->ascent;
     descent = 0.001 * builtinFont->descent;
     fontBBox[0] = 0.001 * builtinFont->bbox[0];
@@ -1123,7 +1123,7 @@
   ffT1 = nullptr;
   ffT1C = nullptr;
   buf = nullptr;
-  if (type == fontType1 && embFontID.num >= 0) {
+  if (type == fontType1 && embFontID != Ref::INVALID()) {
     if ((buf = readEmbFontFile(xref, &len))) {
       if ((ffT1 = FoFiType1::make(buf, len))) {
 	if (ffT1->getName()) {
@@ -1139,7 +1139,7 @@
       }
       gfree(buf);
     }
-  } else if (type == fontType1C && embFontID.num >= 0) {
+  } else if (type == fontType1C && embFontID != Ref::INVALID()) {
     if ((buf = readEmbFontFile(xref, &len))) {
       if ((ffT1C = FoFiType1C::make(buf, len))) {
 	if (ffT1C->getName()) {
@@ -1159,7 +1159,7 @@
 
   // get default base encoding
   if (!baseEnc) {
-    if (builtinFont && embFontID.num < 0) {
+    if (builtinFont && embFontID == Ref::INVALID()) {
       baseEnc = builtinFont->defaultBaseEnc;
       hasEncoding = true;
     } else if (type == fontTrueType) {
@@ -1197,7 +1197,7 @@
   // T1C->T1 conversion (since the 'seac' operator depends on having
   // the accents in the encoding), so we fill in any gaps from
   // StandardEncoding
-  if (type == fontType1C && embFontID.num >= 0 && baseEncFromFontFile) {
+  if (type == fontType1C && embFontID != Ref::INVALID() && baseEncFromFontFile) {
     for (i = 0; i < 256; ++i) {
       if (!enc[i] && standardEncoding[i]) {
 	enc[i] = (char *)standardEncoding[i];
diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h
index 0b1b03e..740a29c 100644
--- a/poppler/GfxFont.h
+++ b/poppler/GfxFont.h
@@ -218,8 +218,8 @@
   // Invalidate an embedded font
   // Returns false if there is no embedded font.
   bool invalidateEmbeddedFont() {
-    if (embFontID.num >= 0) {
-      embFontID.num = -1;
+    if (embFontID != Ref::INVALID()) {
+      embFontID = Ref::INVALID();
       return true;
     }
     return false;
diff --git a/poppler/Link.cc b/poppler/Link.cc
index bd9e6a6..33b842f 100644
--- a/poppler/Link.cc
+++ b/poppler/Link.cc
@@ -638,7 +638,7 @@
 //------------------------------------------------------------------------
 
 LinkMovie::LinkMovie(const Object *obj) {
-  annotRef.num = -1;
+  annotRef = Ref::INVALID();
   annotTitle = nullptr;
 
   const Object &annotationObj = obj->dictLookupNF("Annotation");
@@ -651,7 +651,7 @@
     annotTitle = tmp.getString()->copy();
   }
 
-  if ((annotTitle == nullptr) && (annotRef.num == -1)) {
+  if ((annotTitle == nullptr) && (annotRef == Ref::INVALID())) {
     error(errSyntaxError, -1,
 	  "Movie action is missing both the Annot and T keys");
   }
@@ -733,7 +733,7 @@
   js = nullptr;
   int operationCode = -1;
 
-  screenRef.num = -1;
+  screenRef = Ref::INVALID();
 
   if (obj->isDict()) {
     Object tmp = obj->dictLookup("JS");
diff --git a/poppler/Link.h b/poppler/Link.h
index 801b75c..08949ea 100644
--- a/poppler/Link.h
+++ b/poppler/Link.h
@@ -360,7 +360,7 @@
   bool hasRenditionObject() const { return renditionObj.isDict(); }
   const Object* getRenditionObject() const { return &renditionObj; }
 
-  bool hasScreenAnnot() const { return screenRef.num != -1; }
+  bool hasScreenAnnot() const { return screenRef != Ref::INVALID(); }
   Ref getScreenAnnot() const { return screenRef; }
 
   RenditionOperation getOperation() const { return operation; }
diff --git a/poppler/StructElement.h b/poppler/StructElement.h
index 9030fb3..4cc052a 100644
--- a/poppler/StructElement.h
+++ b/poppler/StructElement.h
@@ -155,7 +155,7 @@
   bool isGrouping() const;
 
   inline bool isContent() const { return (type == MCID) || isObjectRef(); }
-  inline bool isObjectRef() const { return (type == OBJR && c->ref.num != -1 && c->ref.gen != -1); }
+  inline bool isObjectRef() const { return (type == OBJR && c->ref != Ref::INVALID()); }
 
   int getMCID() const { return c->mcid; }
   Ref getObjectRef() const { return c->ref; }
diff --git a/poppler/StructTreeRoot.h b/poppler/StructTreeRoot.h
index 41b1cd8..58b129c 100644
--- a/poppler/StructTreeRoot.h
+++ b/poppler/StructTreeRoot.h
@@ -5,7 +5,7 @@
 // This file is licensed under the GPLv2 or later
 //
 // Copyright 2013, 2014 Igalia S.L.
-// Copyright 2018 Albert Astals Cid <aacid@kde.org>
+// Copyright 2018, 2019 Albert Astals Cid <aacid@kde.org>
 // Copyright 2018 Adrian Johnson <ajohnson@redneon.com>
 // Copyright 2018 Adam Reichold <adam.reichold@t-online.de>
 //
@@ -64,7 +64,7 @@
     Ref            ref;
     StructElement *element;
 
-    Parent(): element(nullptr) { ref.num = ref.gen = -1; }
+    Parent(): element(nullptr) { ref = Ref::INVALID(); }
     Parent(const Parent &p) = default;
     Parent& operator=(const Parent &) = default;
     ~Parent() {}
diff --git a/qt5/src/poppler-link.cc b/qt5/src/poppler-link.cc
index da3d5d8..099871d 100644
--- a/qt5/src/poppler-link.cc
+++ b/qt5/src/poppler-link.cc
@@ -1,5 +1,5 @@
 /* poppler-link.cc: qt interface to poppler
- * Copyright (C) 2006-2007, 2013, 2016-2018, Albert Astals Cid
+ * Copyright (C) 2006-2007, 2013, 2016-2019, Albert Astals Cid
  * Copyright (C) 2007-2008, Pino Toscano <pino@kde.org>
  * Copyright (C) 2010 Hib Eris <hib@hiberis.nl>
  * Copyright (C) 2012, Tobias Koenig <tokoe@kdab.com>
@@ -626,7 +626,7 @@
 	bool LinkRendition::isReferencedAnnotation( const ScreenAnnotation *annotation ) const
 	{
 		Q_D( const LinkRendition );
-		if ( d->annotationReference.num != -1 && d->annotationReference == annotation->d_ptr->pdfObjectReference() )
+		if ( d->annotationReference != Ref::INVALID() && d->annotationReference == annotation->d_ptr->pdfObjectReference() )
 		{
 			return true;
 		}
@@ -681,7 +681,7 @@
 	bool LinkMovie::isReferencedAnnotation( const MovieAnnotation *annotation ) const
 	{
 		Q_D( const LinkMovie );
-		if ( d->annotationReference.num != -1 && d->annotationReference == annotation->d_ptr->pdfObjectReference() )
+		if ( d->annotationReference != Ref::INVALID() && d->annotationReference == annotation->d_ptr->pdfObjectReference() )
 		{
 			return true;
 		}
diff --git a/qt5/src/poppler-page.cc b/qt5/src/poppler-page.cc
index c6e3d52..3e75062 100644
--- a/qt5/src/poppler-page.cc
+++ b/qt5/src/poppler-page.cc
@@ -1,7 +1,7 @@
 /* poppler-page.cc: qt interface to poppler
  * Copyright (C) 2005, Net Integration Technologies, Inc.
  * Copyright (C) 2005, Brad Hards <bradh@frogmouth.net>
- * Copyright (C) 2005-2018, Albert Astals Cid <aacid@kde.org>
+ * Copyright (C) 2005-2019, Albert Astals Cid <aacid@kde.org>
  * Copyright (C) 2005, Stefan Kebekus <stefan.kebekus@math.uni-koeln.de>
  * Copyright (C) 2006-2011, Pino Toscano <pino@kde.org>
  * Copyright (C) 2008 Carlos Garcia Campos <carlosgc@gnome.org>
@@ -299,8 +299,7 @@
 
       const QString title = ( lm->hasAnnotTitle() ? UnicodeParsedString( lm->getAnnotTitle() ) : QString() );
 
-      Ref reference;
-      reference.num = reference.gen = -1;
+      Ref reference = Ref::INVALID();
       if ( lm->hasAnnotRef() )
         reference = *lm->getAnnotRef();
 
@@ -329,8 +328,7 @@
     {
       ::LinkRendition *lrn = (::LinkRendition *)a;
 
-      Ref reference;
-      reference.num = reference.gen = -1;
+      Ref reference = Ref::INVALID();
       if ( lrn->hasScreenAnnot() )
         reference = lrn->getScreenAnnot();
 
