diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.10.2
+------
+* Switched to <stdint.h> to get more portable size correctness.
+
 0.10.1
 ------
 * Fixed typo in `cbits/i2d.c` that was causing a linking error.
diff --git a/bytes.cabal b/bytes.cabal
--- a/bytes.cabal
+++ b/bytes.cabal
@@ -1,6 +1,6 @@
 name:          bytes
 category:      Data, Serialization
-version:       0.10.1
+version:       0.10.2
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
diff --git a/cbits/i2d.c b/cbits/i2d.c
--- a/cbits/i2d.c
+++ b/cbits/i2d.c
@@ -1,35 +1,36 @@
+#include <stdint.h>
 
-unsigned long long doubleToWord64(double input) {
+uint64_t doubleToWord64(double input) {
   union {
     double d;
-    unsigned long long l;
+    uint64_t l;
   } u;
   u.d = input;
   return u.l;
 }
 
-double word64ToDouble(unsigned long long input) {
+double word64ToDouble(uint64_t input) {
   union {
     double d;
-    unsigned long long l;
+    uint64_t l;
   } u;
   u.l = input;
   return u.d;
 }
 
-unsigned long long floatToWord32(float input) {
+uint32_t floatToWord32(float input) {
   union {
     float f;
-    unsigned long long l;
+    uint32_t l;
   } u;
   u.f = input;
   return u.l;
 }
 
-float word32ToFloat(unsigned long long input) {
+float word32ToFloat(uint32_t input) {
   union {
     float f;
-    unsigned long long l;
+    uint32_t l;
   } u;
   u.l = input;
   return u.f;
