diff --git a/docs/public.rst b/docs/public.rst
index 495dc3ecd04cd4626902a7855b87a963a39bc30b..9ba2712a8a935b4b1784e0d57d1d9c812b2107c7 100644
--- a/docs/public.rst
+++ b/docs/public.rst
@@ -56,7 +56,7 @@ with equal that from (pkbob, skalice).  This is how the system works:
 
     # Bob wishes to send Alice an encrypted message
     # So Bob must make a Box with his private key and Alice's public key
-    bob_box = Box(pkalice, skbob)
+    bob_box = Box(skbob, pkalice)
 
     # This is our message to send, it must be a bytestring as Box will
     #   treat is as just a binary blob of data.
@@ -72,7 +72,7 @@ with equal that from (pkbob, skalice).  This is how the system works:
     ciphertext = bob_box.encrypt(message, nonce)
 
     # Alice creates a second box with her private key to decrypt the message
-    alice_box = Box(pkbob, skalice)
+    alice_box = Box(skalice, pkbob)
 
     # Decrypt our message, an exception will be raised if the encryption was
     #   tampered with or there was otherwise an error.
diff --git a/nacl/public.py b/nacl/public.py
index 42705132a81ec29ccb6a8e5346fba91c5d3da66f..ae0c792277d07cf2d41fbf533836aa28e3340b82 100644
--- a/nacl/public.py
+++ b/nacl/public.py
@@ -93,18 +93,18 @@ class Box(encoding.Encodable, six.StringFixer, object):
     send are repudiable. For non-repudiable messages, sign them after
     encryption.
 
-    :param public_key: :class:`~nacl.public.PublicKey` used to encrypt and
-        decrypt messages
     :param private_key: :class:`~nacl.public.PrivateKey` used to encrypt and
         decrypt messages
+    :param public_key: :class:`~nacl.public.PublicKey` used to encrypt and
+        decrypt messages
 
     :cvar NONCE_SIZE: The size that the nonce is required to be.
     """
 
     NONCE_SIZE = nacl.lib.crypto_box_NONCEBYTES
 
-    def __init__(self, public_key, private_key):
-        if public_key and private_key:
+    def __init__(self, private_key, public_key):
+        if private_key and public_key:
             _shared_key_size = nacl.lib.crypto_box_BEFORENMBYTES
             _shared_key = nacl.ffi.new("unsigned char[]", _shared_key_size)
 
diff --git a/tests/test_box.py b/tests/test_box.py
index 25e2ef3937ccb2d56e7ce476ffdfb2047a094dc4..539fa815db23341a5f0046ac0fee3afa063fadf3 100644
--- a/tests/test_box.py
+++ b/tests/test_box.py
@@ -37,7 +37,7 @@ def test_box_encryption(skalice, pkalice, skbob, pkbob, nonce, plaintext, cipher
     pkalice = PublicKey(pkalice, encoder=HexEncoder)
     skbob = PrivateKey(skbob, encoder=HexEncoder)
 
-    box = Box(pkalice, skbob)
+    box = Box(skbob, pkalice)
 
     plaintext = binascii.unhexlify(plaintext)
     nonce = binascii.unhexlify(nonce)
@@ -50,7 +50,7 @@ def test_box_decryption(skalice, pkalice, skbob, pkbob, nonce, plaintext, cipher
     pkbob = PublicKey(pkbob, encoder=HexEncoder)
     skalice = PrivateKey(skalice, encoder=HexEncoder)
 
-    box = Box(pkbob, skalice)
+    box = Box(skalice, pkbob)
 
     nonce = binascii.unhexlify(nonce)
     decrypted = binascii.hexlify(