diff --git a/include/ceres/cost_function.h b/include/ceres/cost_function.h
index 1e085d6..39425e8 100644
--- a/include/ceres/cost_function.h
+++ b/include/ceres/cost_function.h
@@ -44,9 +44,9 @@
 #ifndef CERES_PUBLIC_COST_FUNCTION_H_
 #define CERES_PUBLIC_COST_FUNCTION_H_
 
+#include <cstdint>
 #include <vector>
 #include "ceres/internal/port.h"
-#include "ceres/types.h"
 #include "ceres/internal/disable_warnings.h"
 
 namespace ceres {
@@ -116,7 +116,7 @@
                         double* residuals,
                         double** jacobians) const = 0;
 
-  const std::vector<int32>& parameter_block_sizes() const {
+  const std::vector<int32_t>& parameter_block_sizes() const {
     return parameter_block_sizes_;
   }
 
@@ -125,7 +125,7 @@
   }
 
  protected:
-  std::vector<int32>* mutable_parameter_block_sizes() {
+  std::vector<int32_t>* mutable_parameter_block_sizes() {
     return &parameter_block_sizes_;
   }
 
@@ -136,7 +136,7 @@
  private:
   // Cost function signature metadata: number of inputs & their sizes,
   // number of outputs (residuals).
-  std::vector<int32> parameter_block_sizes_;
+  std::vector<int32_t> parameter_block_sizes_;
   int num_residuals_;
 };
 
diff --git a/include/ceres/cost_function_to_functor.h b/include/ceres/cost_function_to_functor.h
index 8e30543..e17bc0e 100644
--- a/include/ceres/cost_function_to_functor.h
+++ b/include/ceres/cost_function_to_functor.h
@@ -88,12 +88,14 @@
 #define CERES_PUBLIC_COST_FUNCTION_TO_FUNCTOR_H_
 
 #include <numeric>
+#include <cstdint>
 #include <vector>
 
 #include "ceres/cost_function.h"
 #include "ceres/dynamic_cost_function_to_functor.h"
 #include "ceres/internal/fixed_array.h"
 #include "ceres/internal/port.h"
+#include "ceres/types.h"
 
 namespace ceres {
 
@@ -124,7 +126,7 @@
         << N3 << ", " << N4 << ", " << N5 << ", " << N6 << ", " << N7 << ", "
         << N8 << ", " << N9;
 
-    const std::vector<int32>& parameter_block_sizes =
+    const std::vector<int32_t>& parameter_block_sizes =
         cost_function->parameter_block_sizes();
     const int num_parameter_blocks =
         (N0 > 0) + (N1 > 0) + (N2 > 0) + (N3 > 0) + (N4 > 0) +
diff --git a/include/ceres/dynamic_cost_function_to_functor.h b/include/ceres/dynamic_cost_function_to_functor.h
index f6ff888..d4fce1c 100644
--- a/include/ceres/dynamic_cost_function_to_functor.h
+++ b/include/ceres/dynamic_cost_function_to_functor.h
@@ -114,7 +114,7 @@
 
   template <typename JetT>
   bool operator()(JetT const* const* inputs, JetT* output) const {
-    const std::vector<int32>& parameter_block_sizes =
+    const std::vector<int32_t>& parameter_block_sizes =
         cost_function_->parameter_block_sizes();
     const int num_parameter_blocks =
         static_cast<int>(parameter_block_sizes.size());
@@ -170,7 +170,7 @@
       output[i].v.setZero();
 
       for (int j = 0; j < num_parameter_blocks; ++j) {
-        const int32 block_size = parameter_block_sizes[j];
+        const int32_t block_size = parameter_block_sizes[j];
         for (int k = 0; k < parameter_block_sizes[j]; ++k) {
           output[i].v +=
               jacobian_blocks[j][i * block_size + k] * inputs[j][k].v;
diff --git a/include/ceres/dynamic_numeric_diff_cost_function.h b/include/ceres/dynamic_numeric_diff_cost_function.h
index 4c2766f..d5806ee 100644
--- a/include/ceres/dynamic_numeric_diff_cost_function.h
+++ b/include/ceres/dynamic_numeric_diff_cost_function.h
@@ -98,7 +98,7 @@
         << "You must call DynamicNumericDiffCostFunction::SetNumResiduals() "
         << "before DynamicNumericDiffCostFunction::Evaluate().";
 
-    const std::vector<int32>& block_sizes = parameter_block_sizes();
+    const std::vector<int32_t>& block_sizes = parameter_block_sizes();
     CHECK(!block_sizes.empty())
         << "You must call DynamicNumericDiffCostFunction::AddParameterBlock() "
         << "before DynamicNumericDiffCostFunction::Evaluate().";
diff --git a/include/ceres/iteration_callback.h b/include/ceres/iteration_callback.h
index db5d0ef..bd1e782 100644
--- a/include/ceres/iteration_callback.h
+++ b/include/ceres/iteration_callback.h
@@ -64,7 +64,7 @@
         cumulative_time_in_seconds(0.0) {}
 
   // Current iteration number.
-  int32 iteration;
+  int iteration;
 
   // Step was numerically valid, i.e., all values are finite and the
   // step reduces the value of the linearized model.
diff --git a/include/ceres/sized_cost_function.h b/include/ceres/sized_cost_function.h
index b10421e..f9a984f 100644
--- a/include/ceres/sized_cost_function.h
+++ b/include/ceres/sized_cost_function.h
@@ -38,8 +38,8 @@
 #ifndef CERES_PUBLIC_SIZED_COST_FUNCTION_H_
 #define CERES_PUBLIC_SIZED_COST_FUNCTION_H_
 
-#include "ceres/types.h"
 #include "ceres/cost_function.h"
+#include "ceres/types.h"
 #include "glog/logging.h"
 
 namespace ceres {
diff --git a/include/ceres/types.h b/include/ceres/types.h
index f6dd6a1..23ec8f7 100644
--- a/include/ceres/types.h
+++ b/include/ceres/types.h
@@ -44,10 +44,6 @@
 
 namespace ceres {
 
-// Basic integer types. These typedefs are in the Ceres namespace to avoid
-// conflicts with other packages having similar typedefs.
-typedef int   int32;
-
 // Argument type used in interfaces that can optionally take ownership
 // of a passed in argument. If TAKE_OWNERSHIP is passed, the called
 // object takes ownership of the pointer argument, and will call
diff --git a/internal/ceres/block_jacobi_preconditioner.cc b/internal/ceres/block_jacobi_preconditioner.cc
index 22d4b35..772c7af 100644
--- a/internal/ceres/block_jacobi_preconditioner.cc
+++ b/internal/ceres/block_jacobi_preconditioner.cc
@@ -34,7 +34,6 @@
 #include "ceres/block_structure.h"
 #include "ceres/block_random_access_diagonal_matrix.h"
 #include "ceres/casts.h"
-#include "ceres/integral_types.h"
 #include "ceres/internal/eigen.h"
 
 namespace ceres {
diff --git a/internal/ceres/block_random_access_diagonal_matrix.h b/internal/ceres/block_random_access_diagonal_matrix.h
index 1eba575..6ad976f 100644
--- a/internal/ceres/block_random_access_diagonal_matrix.h
+++ b/internal/ceres/block_random_access_diagonal_matrix.h
@@ -37,7 +37,6 @@
 #include <vector>
 
 #include "ceres/block_random_access_matrix.h"
-#include "ceres/integral_types.h"
 #include "ceres/internal/port.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/block_random_access_sparse_matrix.h b/internal/ceres/block_random_access_sparse_matrix.h
index b05096c..12244a5 100644
--- a/internal/ceres/block_random_access_sparse_matrix.h
+++ b/internal/ceres/block_random_access_sparse_matrix.h
@@ -31,6 +31,7 @@
 #ifndef CERES_INTERNAL_BLOCK_RANDOM_ACCESS_SPARSE_MATRIX_H_
 #define CERES_INTERNAL_BLOCK_RANDOM_ACCESS_SPARSE_MATRIX_H_
 
+#include <cstdint>
 #include <memory>
 #include <set>
 #include <unordered_map>
@@ -39,7 +40,6 @@
 
 #include "ceres/block_random_access_matrix.h"
 #include "ceres/triplet_sparse_matrix.h"
-#include "ceres/integral_types.h"
 #include "ceres/internal/port.h"
 #include "ceres/types.h"
 #include "ceres/small_blas.h"
@@ -93,16 +93,16 @@
   TripletSparseMatrix* mutable_matrix() { return tsm_.get(); }
 
  private:
-  int64 IntPairToLong(int row, int col) const {
+  int64_t IntPairToLong(int row, int col) const {
     return row * kMaxRowBlocks + col;
   }
 
-  void LongToIntPair(int64 index, int* row, int* col) const {
+  void LongToIntPair(int64_t index, int* row, int* col) const {
     *row = index / kMaxRowBlocks;
     *col = index % kMaxRowBlocks;
   }
 
-  const int64 kMaxRowBlocks;
+  const int64_t kMaxRowBlocks;
 
   // row/column block sizes.
   const std::vector<int> blocks_;
diff --git a/internal/ceres/block_random_access_sparse_matrix_test.cc b/internal/ceres/block_random_access_sparse_matrix_test.cc
index bae33b9..9ca9c46 100644
--- a/internal/ceres/block_random_access_sparse_matrix_test.cc
+++ b/internal/ceres/block_random_access_sparse_matrix_test.cc
@@ -148,14 +148,14 @@
   }
 
   void CheckIntPairToLong(int a, int b) {
-    int64 value = m_->IntPairToLong(a, b);
+    int64_t value = m_->IntPairToLong(a, b);
     EXPECT_GT(value, 0) << "Overflow a = " << a << " b = " << b;
     EXPECT_GT(value, a) << "Overflow a = " << a << " b = " << b;
     EXPECT_GT(value, b) << "Overflow a = " << a << " b = " << b;
   }
 
   void CheckLongToIntPair() {
-    uint64 max_rows =  m_->kMaxRowBlocks;
+    uint64_t max_rows =  m_->kMaxRowBlocks;
     for (int row = max_rows - 10; row < max_rows; ++row) {
       for (int col = 0; col < 10; ++col) {
         int row_computed;
diff --git a/internal/ceres/block_structure.h b/internal/ceres/block_structure.h
index 9d1b5e9..5761a1f 100644
--- a/internal/ceres/block_structure.h
+++ b/internal/ceres/block_structure.h
@@ -40,12 +40,11 @@
 
 #include <vector>
 #include "ceres/internal/port.h"
-#include "ceres/types.h"
 
 namespace ceres {
 namespace internal {
 
-typedef int32 BlockSize;
+typedef int32_t BlockSize;
 
 struct Block {
   Block() : size(-1), position(-1) {}
diff --git a/internal/ceres/cost_function_to_functor_test.cc b/internal/ceres/cost_function_to_functor_test.cc
index 5878d3b..52687ea 100644
--- a/internal/ceres/cost_function_to_functor_test.cc
+++ b/internal/ceres/cost_function_to_functor_test.cc
@@ -30,6 +30,7 @@
 
 #include "ceres/cost_function_to_functor.h"
 
+#include <cstdint>
 #include <memory>
 #include "ceres/dynamic_autodiff_cost_function.h"
 #include "ceres/dynamic_cost_function_to_functor.h"
@@ -47,9 +48,9 @@
   EXPECT_EQ(cost_function.num_residuals(),
             actual_cost_function.num_residuals());
   const int num_residuals = cost_function.num_residuals();
-  const vector<int32>& parameter_block_sizes =
+  const vector<int32_t>& parameter_block_sizes =
       cost_function.parameter_block_sizes();
-  const vector<int32>& actual_parameter_block_sizes =
+  const vector<int32_t>& actual_parameter_block_sizes =
       actual_cost_function.parameter_block_sizes();
   EXPECT_EQ(parameter_block_sizes.size(),
             actual_parameter_block_sizes.size());
diff --git a/internal/ceres/covariance_test.cc b/internal/ceres/covariance_test.cc
index 9c55136..dea0723 100644
--- a/internal/ceres/covariance_test.cc
+++ b/internal/ceres/covariance_test.cc
@@ -31,6 +31,7 @@
 #include "ceres/covariance.h"
 
 #include <algorithm>
+#include <cstdint>
 #include <cmath>
 #include <map>
 #include <memory>
@@ -55,7 +56,7 @@
 class UnaryCostFunction: public CostFunction {
  public:
   UnaryCostFunction(const int num_residuals,
-                    const int32 parameter_block_size,
+                    const int32_t parameter_block_size,
                     const double* jacobian)
       : jacobian_(jacobian, jacobian + num_residuals * parameter_block_size) {
     set_num_residuals(num_residuals);
@@ -88,8 +89,8 @@
 class BinaryCostFunction: public CostFunction {
  public:
   BinaryCostFunction(const int num_residuals,
-                     const int32 parameter_block1_size,
-                     const int32 parameter_block2_size,
+                     const int32_t parameter_block1_size,
+                     const int32_t parameter_block2_size,
                      const double* jacobian1,
                      const double* jacobian2)
       : jacobian1_(jacobian1,
diff --git a/internal/ceres/gradient_checker.cc b/internal/ceres/gradient_checker.cc
index c16c141..d231c83 100644
--- a/internal/ceres/gradient_checker.cc
+++ b/internal/ceres/gradient_checker.cc
@@ -34,6 +34,7 @@
 
 #include <algorithm>
 #include <cmath>
+#include <cstdint>
 #include <numeric>
 #include <string>
 #include <vector>
@@ -65,7 +66,7 @@
   CHECK_NOTNULL(jacobians);
   CHECK_NOTNULL(local_jacobians);
 
-  const vector<int32>& block_sizes = function->parameter_block_sizes();
+  const vector<int32_t>& block_sizes = function->parameter_block_sizes();
   const int num_parameter_blocks = block_sizes.size();
 
   // Allocate Jacobian matrices in local space.
@@ -135,7 +136,7 @@
           function, DO_NOT_TAKE_OWNERSHIP, options);
   finite_diff_cost_function_.reset(finite_diff_cost_function);
 
-  const vector<int32>& parameter_block_sizes =
+  const vector<int32_t>& parameter_block_sizes =
       function->parameter_block_sizes();
   const int num_parameter_blocks = parameter_block_sizes.size();
   for (int i = 0; i < num_parameter_blocks; ++i) {
diff --git a/internal/ceres/gradient_checking_cost_function.cc b/internal/ceres/gradient_checking_cost_function.cc
index 6e2a82c..b402844 100644
--- a/internal/ceres/gradient_checking_cost_function.cc
+++ b/internal/ceres/gradient_checking_cost_function.cc
@@ -33,6 +33,7 @@
 
 #include <algorithm>
 #include <cmath>
+#include <cstdint>
 #include <numeric>
 #include <string>
 #include <vector>
@@ -74,7 +75,7 @@
         extra_info_(extra_info),
         callback_(callback) {
     CHECK_NOTNULL(callback_);
-    const vector<int32>& parameter_block_sizes =
+    const vector<int32_t>& parameter_block_sizes =
         function->parameter_block_sizes();
     *mutable_parameter_block_sizes() = parameter_block_sizes;
     set_num_residuals(function->num_residuals());
@@ -106,7 +107,7 @@
     MatrixRef(residuals, num_residuals, 1) = results.residuals;
 
     // Copy the original jacobian blocks into the jacobians array.
-    const vector<int32>& block_sizes = function_->parameter_block_sizes();
+    const vector<int32_t>& block_sizes = function_->parameter_block_sizes();
     for (int k = 0; k < block_sizes.size(); k++) {
       if (jacobians[k] != NULL) {
         MatrixRef(jacobians[k],
diff --git a/internal/ceres/gradient_checking_cost_function_test.cc b/internal/ceres/gradient_checking_cost_function_test.cc
index fc8e071..2a0390c 100644
--- a/internal/ceres/gradient_checking_cost_function_test.cc
+++ b/internal/ceres/gradient_checking_cost_function_test.cc
@@ -31,6 +31,7 @@
 #include "ceres/gradient_checking_cost_function.h"
 
 #include <cmath>
+#include <cstdint>
 #include <memory>
 #include <vector>
 
@@ -261,7 +262,7 @@
 // Trivial cost function that accepts a single argument.
 class UnaryCostFunction : public CostFunction {
  public:
-  UnaryCostFunction(int num_residuals, int32 parameter_block_size) {
+  UnaryCostFunction(int num_residuals, int32_t parameter_block_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block_size);
   }
@@ -281,8 +282,8 @@
 class BinaryCostFunction: public CostFunction {
  public:
   BinaryCostFunction(int num_residuals,
-                     int32 parameter_block1_size,
-                     int32 parameter_block2_size) {
+                     int32_t parameter_block1_size,
+                     int32_t parameter_block2_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block1_size);
     mutable_parameter_block_sizes()->push_back(parameter_block2_size);
@@ -302,9 +303,9 @@
 class TernaryCostFunction: public CostFunction {
  public:
   TernaryCostFunction(int num_residuals,
-                      int32 parameter_block1_size,
-                      int32 parameter_block2_size,
-                      int32 parameter_block3_size) {
+                      int32_t parameter_block1_size,
+                      int32_t parameter_block2_size,
+                      int32_t parameter_block3_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block1_size);
     mutable_parameter_block_sizes()->push_back(parameter_block2_size);
diff --git a/internal/ceres/graph.h b/internal/ceres/graph.h
index 079d31d..4e1fd81 100644
--- a/internal/ceres/graph.h
+++ b/internal/ceres/graph.h
@@ -35,7 +35,6 @@
 #include <unordered_set>
 #include <unordered_map>
 #include <utility>
-#include "ceres/integral_types.h"
 #include "ceres/map_util.h"
 #include "ceres/pair_hash.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/integral_types.h b/internal/ceres/integral_types.h
deleted file mode 100644
index 98a746f..0000000
--- a/internal/ceres/integral_types.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2015 Google Inc. All rights reserved.
-// http://ceres-solver.org/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keir@google.com (Keir Mierle)
-//
-// Portable typedefs for various fixed-size integers. Uses template
-// metaprogramming instead of fragile compiler defines.
-
-#ifndef CERES_INTERNAL_INTEGRAL_TYPES_H_
-#define CERES_INTERNAL_INTEGRAL_TYPES_H_
-
-namespace ceres {
-namespace internal {
-
-// Compile time ternary on types.
-template<bool kCondition, typename kTrueType, typename kFalseType>
-struct Ternary {
-  typedef kTrueType type;
-};
-template<typename kTrueType, typename kFalseType>
-struct Ternary<false, kTrueType, kFalseType> {
-  typedef kFalseType type;
-};
-
-#define CERES_INTSIZE(TYPE) \
-    typename Ternary<sizeof(TYPE) * 8 == kBits, TYPE,
-
-template<int kBits>
-struct Integer {
-  typedef
-      CERES_INTSIZE(char)
-      CERES_INTSIZE(short)
-      CERES_INTSIZE(int)
-      CERES_INTSIZE(long int)
-      CERES_INTSIZE(long long)
-      void>::type >::type >::type >::type >::type
-      type;
-};
-
-template<int kBits>
-struct UnsignedInteger {
-  typedef
-      CERES_INTSIZE(unsigned char)
-      CERES_INTSIZE(unsigned short)
-      CERES_INTSIZE(unsigned int)
-      CERES_INTSIZE(unsigned long int)
-      CERES_INTSIZE(unsigned long long)
-      void>::type >::type >::type >::type >::type
-      type;
-};
-
-#undef CERES_INTSIZE
-
-typedef Integer< 8>::type int8;
-typedef Integer<32>::type int32;
-typedef Integer<64>::type int64;
-
-typedef UnsignedInteger< 8>::type uint8;
-typedef UnsignedInteger<16>::type uint16;
-typedef UnsignedInteger<32>::type uint32;
-typedef UnsignedInteger<64>::type uint64;
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif  // CERES_INTERNAL_INTEGRAL_TYPES_H_
diff --git a/internal/ceres/pair_hash.h b/internal/ceres/pair_hash.h
index 7fb32cf..80453ba 100644
--- a/internal/ceres/pair_hash.h
+++ b/internal/ceres/pair_hash.h
@@ -34,8 +34,8 @@
 #define CERES_INTERNAL_PAIR_HASH_H_
 
 #include "ceres/internal/port.h"
+#include <cstdint>
 #include <utility>
-#include "ceres/integral_types.h"
 
 namespace ceres {
 namespace internal {
@@ -54,7 +54,7 @@
 // instructions in 27 cycles, if you're lucky.
 //
 // 32bit version
-inline void hash_mix(uint32& a, uint32& b, uint32& c) {
+inline void hash_mix(uint32_t& a, uint32_t& b, uint32_t& c) {
   a -= b; a -= c; a ^= (c>>13);
   b -= c; b -= a; b ^= (a<<8);
   c -= a; c -= b; c ^= (b>>13);
@@ -67,7 +67,7 @@
 }
 
 // 64bit version
-inline void hash_mix(uint64& a, uint64& b, uint64& c) {
+inline void hash_mix(uint64_t& a, uint64_t& b, uint64_t& c) {
   a -= b; a -= c; a ^= (c>>43);
   b -= c; b -= a; b ^= (a<<9);
   c -= a; c -= b; c ^= (b>>8);
@@ -79,16 +79,16 @@
   c -= a; c -= b; c ^= (b>>11);
 }
 
-inline uint32 Hash32NumWithSeed(uint32 num, uint32 c) {
+inline uint32_t Hash32NumWithSeed(uint32_t num, uint32_t c) {
   // The golden ratio; an arbitrary value.
-  uint32 b = 0x9e3779b9UL;
+  uint32_t b = 0x9e3779b9UL;
   hash_mix(num, b, c);
   return c;
 }
 
-inline uint64 Hash64NumWithSeed(uint64 num, uint64 c) {
+inline uint64_t Hash64NumWithSeed(uint64_t num, uint64_t c) {
   // More of the golden ratio.
-  uint64 b = GG_ULONGLONG(0xe08c1d668b756f82);
+  uint64_t b = GG_ULONGLONG(0xe08c1d668b756f82);
   hash_mix(num, b, c);
   return c;
 }
@@ -101,8 +101,8 @@
     const std::size_t h1 = std::hash<T>()(p.first);
     const std::size_t h2 = std::hash<T>()(p.second);
     // The decision below is at compile time
-    return (sizeof(h1) <= sizeof(uint32)) ? Hash32NumWithSeed(h1, h2)
-                                          : Hash64NumWithSeed(h1, h2);
+    return (sizeof(h1) <= sizeof(uint32_t)) ? Hash32NumWithSeed(h1, h2)
+                                            : Hash64NumWithSeed(h1, h2);
   }
 };
 
diff --git a/internal/ceres/parameter_block.h b/internal/ceres/parameter_block.h
index c07edef..c074042 100644
--- a/internal/ceres/parameter_block.h
+++ b/internal/ceres/parameter_block.h
@@ -32,13 +32,13 @@
 #define CERES_INTERNAL_PARAMETER_BLOCK_H_
 
 #include <algorithm>
+#include <cstdint>
 #include <cstdlib>
 #include <memory>
 #include <limits>
 #include <string>
 #include <unordered_set>
 #include "ceres/array_utils.h"
-#include "ceres/integral_types.h"
 #include "ceres/internal/eigen.h"
 #include "ceres/internal/port.h"
 #include "ceres/local_parameterization.h"
@@ -393,13 +393,13 @@
 
   // The index of the parameter. This is used by various other parts of Ceres to
   // permit switching from a ParameterBlock* to an index in another array.
-  int32 index_;
+  int32_t index_;
 
   // The offset of this parameter block inside a larger state vector.
-  int32 state_offset_;
+  int32_t state_offset_;
 
   // The offset of this parameter block inside a larger delta vector.
-  int32 delta_offset_;
+  int32_t delta_offset_;
 
   // If non-null, contains the residual blocks this parameter block is in.
   std::unique_ptr<ResidualBlockSet> residual_blocks_;
diff --git a/internal/ceres/problem_impl.cc b/internal/ceres/problem_impl.cc
index f627659..984e3ca 100644
--- a/internal/ceres/problem_impl.cc
+++ b/internal/ceres/problem_impl.cc
@@ -33,6 +33,7 @@
 
 #include <algorithm>
 #include <cstddef>
+#include <cstdint>
 #include <iterator>
 #include <memory>
 #include <set>
@@ -294,7 +295,7 @@
            cost_function->parameter_block_sizes().size());
 
   // Check the sizes match.
-  const vector<int32>& parameter_block_sizes =
+  const vector<int32_t>& parameter_block_sizes =
       cost_function->parameter_block_sizes();
 
   if (!options_.disable_all_safety_checks) {
diff --git a/internal/ceres/problem_test.cc b/internal/ceres/problem_test.cc
index 8012583..cdc0ef5 100644
--- a/internal/ceres/problem_test.cc
+++ b/internal/ceres/problem_test.cc
@@ -59,7 +59,7 @@
 // Trivial cost function that accepts a single argument.
 class UnaryCostFunction : public CostFunction {
  public:
-  UnaryCostFunction(int num_residuals, int32 parameter_block_size) {
+  UnaryCostFunction(int num_residuals, int32_t parameter_block_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block_size);
   }
@@ -79,8 +79,8 @@
 class BinaryCostFunction: public CostFunction {
  public:
   BinaryCostFunction(int num_residuals,
-                     int32 parameter_block1_size,
-                     int32 parameter_block2_size) {
+                     int32_t parameter_block1_size,
+                     int32_t parameter_block2_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block1_size);
     mutable_parameter_block_sizes()->push_back(parameter_block2_size);
@@ -100,9 +100,9 @@
 class TernaryCostFunction: public CostFunction {
  public:
   TernaryCostFunction(int num_residuals,
-                      int32 parameter_block1_size,
-                      int32 parameter_block2_size,
-                      int32 parameter_block3_size) {
+                      int32_t parameter_block1_size,
+                      int32_t parameter_block2_size,
+                      int32_t parameter_block3_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block1_size);
     mutable_parameter_block_sizes()->push_back(parameter_block2_size);
diff --git a/internal/ceres/residual_block.h b/internal/ceres/residual_block.h
index 815a7a1..8b8b8ae 100644
--- a/internal/ceres/residual_block.h
+++ b/internal/ceres/residual_block.h
@@ -34,6 +34,7 @@
 #ifndef CERES_INTERNAL_RESIDUAL_BLOCK_H_
 #define CERES_INTERNAL_RESIDUAL_BLOCK_H_
 
+#include <cstdint>
 #include <memory>
 #include <string>
 #include <vector>
@@ -139,7 +140,7 @@
   // The index of the residual, typically in a Program. This is only to permit
   // switching from a ResidualBlock* to an index in the Program's array, needed
   // to do efficient removals.
-  int32 index_;
+  int32_t index_;
 };
 
 }  // namespace internal
diff --git a/internal/ceres/residual_block_test.cc b/internal/ceres/residual_block_test.cc
index 673744b..3a33be7 100644
--- a/internal/ceres/residual_block_test.cc
+++ b/internal/ceres/residual_block_test.cc
@@ -30,6 +30,7 @@
 
 #include "ceres/residual_block.h"
 
+#include <cstdint>
 #include "gtest/gtest.h"
 #include "ceres/parameter_block.h"
 #include "ceres/sized_cost_function.h"
@@ -45,9 +46,9 @@
 class TernaryCostFunction: public CostFunction {
  public:
   TernaryCostFunction(int num_residuals,
-                      int32 parameter_block1_size,
-                      int32 parameter_block2_size,
-                      int32 parameter_block3_size) {
+                      int32_t parameter_block1_size,
+                      int32_t parameter_block2_size,
+                      int32_t parameter_block3_size) {
     set_num_residuals(num_residuals);
     mutable_parameter_block_sizes()->push_back(parameter_block1_size);
     mutable_parameter_block_sizes()->push_back(parameter_block2_size);
