diff --git a/fpdfsdk/fsdk_baseform.cpp b/fpdfsdk/fsdk_baseform.cpp
index 5dd27f8..1e12462 100644
--- a/fpdfsdk/fsdk_baseform.cpp
+++ b/fpdfsdk/fsdk_baseform.cpp
@@ -2800,13 +2800,13 @@
           sa.erase(sa.begin() + nLeftTopIndex);
 
           std::vector<int> aSelect;
-          for (int i = 0; i < sa.size(); ++i) {
+          for (size_t i = 0; i < sa.size(); ++i) {
             CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]);
             FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f;
             if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top)
               aSelect.push_back(i);
           }
-          for (int i = 0; i < aSelect.size(); ++i)
+          for (size_t i = 0; i < aSelect.size(); ++i)
             m_Annots.push_back(sa[aSelect[i]]);
 
           for (int i = aSelect.size() - 1; i >= 0; --i)
@@ -2844,13 +2844,13 @@
           sa.erase(sa.begin() + nLeftTopIndex);
 
           std::vector<int> aSelect;
-          for (int i = 0; i < sa.size(); ++i) {
+          for (size_t i = 0; i < sa.size(); ++i) {
             CFX_FloatRect rcAnnot = GetAnnotRect(sa[i]);
             FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f;
             if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right)
               aSelect.push_back(i);
           }
-          for (int i = 0; i < aSelect.size(); ++i)
+          for (size_t i = 0; i < aSelect.size(); ++i)
             m_Annots.push_back(sa[aSelect[i]]);
 
           for (int i = aSelect.size() - 1; i >= 0; --i)
diff --git a/fpdfsdk/fxedit/fxet_edit.cpp b/fpdfsdk/fxedit/fxet_edit.cpp
index 3d7e485..f45f9ea 100644
--- a/fpdfsdk/fxedit/fxet_edit.cpp
+++ b/fpdfsdk/fxedit/fxet_edit.cpp
@@ -110,7 +110,7 @@
     else
       charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, word);
 
-    if (charcode != -1)
+    if (charcode != CPDF_Font::kInvalidCharCode)
       return pPDFFont->GetCharWidthF(charcode);
   }
 
diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index 0b793db..70b4ef7 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -1460,7 +1460,7 @@
   FX_BOOL bIsLatin = FALSE;
 
   for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) {
-    uint32_t charcode = static_cast<uint32_t>(-1);
+    uint32_t charcode = CPDF_Font::kInvalidCharCode;
     FX_FLOAT kerning;
 
     pTextObj->GetCharInfo(i, charcode, kerning);
@@ -1493,7 +1493,7 @@
   FX_BOOL bIsLatin = FALSE;
 
   for (int i = 0, sz = pTextObj->CountChars(); i < sz; i++) {
-    uint32_t charcode = static_cast<uint32_t>(-1);
+    uint32_t charcode = CPDF_Font::kInvalidCharCode;
     FX_FLOAT kerning;
 
     pTextObj->GetCharInfo(i, charcode, kerning);
diff --git a/fpdfsdk/javascript/JS_Value.cpp b/fpdfsdk/javascript/JS_Value.cpp
index 1d57833..4d2a1d4 100644
--- a/fpdfsdk/javascript/JS_Value.cpp
+++ b/fpdfsdk/javascript/JS_Value.cpp
@@ -893,7 +893,7 @@
 
   va_list ap;
   va_start(ap, nKeywords);
-  for (int i = 0; i < nKeywords; ++i) {
+  for (size_t i = 0; i < nKeywords; ++i) {
     const wchar_t* property = va_arg(ap, const wchar_t*);
     v8::Local<v8::Value> v8Value =
         FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property);
diff --git a/fpdfsdk/pdfwindow/PWL_FontMap.cpp b/fpdfsdk/pdfwindow/PWL_FontMap.cpp
index 0a5eef6..3f149e7 100644
--- a/fpdfsdk/pdfwindow/PWL_FontMap.cpp
+++ b/fpdfsdk/pdfwindow/PWL_FontMap.cpp
@@ -177,7 +177,7 @@
 }
 
 FX_BOOL CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) {
-  for (int32_t i = 0; i < FX_ArraySize(g_sDEStandardFontName); ++i) {
+  for (size_t i = 0; i < FX_ArraySize(g_sDEStandardFontName); ++i) {
     if (sFontName == g_sDEStandardFontName[i])
       return TRUE;
   }
