diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
index a634cff..15b09ba 100644
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -713,7 +713,7 @@
                  i < slicelen; cur += step, i++) {
                 Py_ssize_t lim = step - 1;
 
-                if (cur + step >= PyByteArray_GET_SIZE(self))
+                if (cur + step >= (size_t)PyByteArray_GET_SIZE(self))
                     lim = PyByteArray_GET_SIZE(self) - cur - 1;
 
                 memmove(self->ob_bytes + cur - i,
@@ -721,7 +721,7 @@
             }
             /* Move the tail of the bytes, in one chunk */
             cur = start + slicelen*step;
-            if (cur < PyByteArray_GET_SIZE(self)) {
+            if (cur < (size_t)PyByteArray_GET_SIZE(self)) {
                 memmove(self->ob_bytes + cur - slicelen,
                         self->ob_bytes + cur,
                         PyByteArray_GET_SIZE(self) - cur);
@@ -921,13 +921,14 @@
     const char *quote_postfix = ")";
     Py_ssize_t length = Py_SIZE(self);
     /* 14 == strlen(quote_prefix) + 2 + strlen(quote_postfix) */
-    size_t newsize = 14 + 4 * length;
+    size_t newsize;
     PyObject *v;
-    if (newsize > PY_SSIZE_T_MAX || newsize / 4 - 3 != length) {
+    if (length > (PY_SSIZE_T_MAX - 14) / 4) {
         PyErr_SetString(PyExc_OverflowError,
             "bytearray object is too large to make repr");
         return NULL;
     }
+    newsize = 14 + 4 * length;
     v = PyUnicode_FromUnicode(NULL, newsize);
     if (v == NULL) {
         return NULL;
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 843df6b..9f35d9d 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -126,11 +126,11 @@
 		PyErr_BadInternalCall();
 		return NULL;
 	}
-	nbytes = size * sizeof(PyObject *);
 	/* Check for overflow without an actual overflow,
 	 *  which can cause compiler to optimise out */
-	if (size > PY_SIZE_MAX / sizeof(PyObject *))
+	if ((size_t)size > PY_SIZE_MAX / sizeof(PyObject *))
 		return PyErr_NoMemory();
+	nbytes = size * sizeof(PyObject *);
 	if (numfree) {
 		numfree--;
 		op = free_list[numfree];
@@ -1426,7 +1426,7 @@
 	 * we don't care what's in the block.
 	 */
 	merge_freemem(ms);
-	if (need > PY_SSIZE_T_MAX / sizeof(PyObject*)) {
+	if ((size_t)need > PY_SSIZE_T_MAX / sizeof(PyObject*)) {
 		PyErr_NoMemory();
 		return -1;
 	}
@@ -2616,7 +2616,8 @@
 				step = -step;
 			}
 
-			assert(slicelength <= PY_SIZE_MAX / sizeof(PyObject*));
+			assert((size_t)slicelength <=
+			       PY_SIZE_MAX / sizeof(PyObject*));
 
 			garbage = (PyObject**)
 				PyMem_MALLOC(slicelength*sizeof(PyObject*));
@@ -2632,13 +2633,13 @@
 			   and then tail end of the list that was not
 			   covered by the slice */
 			for (cur = start, i = 0;
-			     cur < stop;
+			     cur < (size_t)stop;
 			     cur += step, i++) {
 				Py_ssize_t lim = step - 1;
 
 				garbage[i] = PyList_GET_ITEM(self, cur);
 
-				if (cur + step >= Py_SIZE(self)) {
+				if (cur + step >= (size_t)Py_SIZE(self)) {
 					lim = Py_SIZE(self) - cur - 1;
 				}
 
@@ -2647,7 +2648,7 @@
 					lim * sizeof(PyObject *));
 			}
 			cur = start + slicelength*step;
-			if (cur < Py_SIZE(self)) {
+			if (cur < (size_t)Py_SIZE(self)) {
 				memmove(self->ob_item + cur - slicelength,
 					self->ob_item + cur,
 					(Py_SIZE(self) - cur) * 
