diff --git a/lib/formdata.c b/lib/formdata.c
index ccb73fad03a5dd43d5b4426760221fca802a0edd..58d1547af99d1880afe33480cc9f4f12171d229e 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -1100,7 +1100,7 @@ void curl_formfree(struct curl_httppost *form)
 
 CURLcode Curl_getFormData(struct FormData **finalform,
                           struct curl_httppost *post,
-                          size_t *sizep)
+                          curl_off_t *sizep)
 {
   struct FormData *form = NULL;
   struct FormData *firstform;
diff --git a/lib/formdata.h b/lib/formdata.h
index 6fdec9f1323da835e7a35898a84a0433135bd30d..df6ae3ac07e97dca553d79917bd519f00a98b547 100644
--- a/lib/formdata.h
+++ b/lib/formdata.h
@@ -57,7 +57,7 @@ int Curl_FormInit(struct Form *form, struct FormData *formdata );
 CURLcode
 Curl_getFormData(struct FormData **,
                  struct curl_httppost *post,
-                 size_t *size);
+                 curl_off_t *size);
 
 /* fread() emulation */
 size_t Curl_FormReader(char *buffer,
diff --git a/lib/http.c b/lib/http.c
index a81a7bbf66481eb3f4f907078874ef69dc09b598..19473d3f1957cbc72461eb7156a39828cb69ef70 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -457,8 +457,8 @@ static size_t readmoredata(char *buffer,
   conn->bits.forbidchunk= (http->sending == HTTPSEND_REQUEST)?TRUE:FALSE;
 
   if(http->postsize <= fullsize) {
-    memcpy(buffer, http->postdata, http->postsize);
-    fullsize = http->postsize;
+    memcpy(buffer, http->postdata, (size_t)http->postsize);
+    fullsize = (size_t)http->postsize;
 
     if(http->backup.postsize) {
       /* move backup data into focus and continue on that */