diff --git a/app/src/main/java/com/m2049r/xmrwallet/SendAmountWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/SendAmountWizardFragment.java
index f4140413..a1a51750 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/SendAmountWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/SendAmountWizardFragment.java
@@ -115,10 +115,11 @@ public class SendAmountWizardFragment extends SendWizardFragment {
         Timber.d("onResumeFragment()");
         Helper.hideKeyboard(getActivity());
         final long funds = getTotalFunds();
-        maxFunds = funds / 1000000000000L;
+        maxFunds = 1.0 * funds / 1000000000000L;
         tvFunds.setText(getString(R.string.send_available,
                 Wallet.getDisplayAmount(funds)));
-        if (evAmount.getAmount().isEmpty()) {
+        // getAmount is null if exchange is in progress
+        if ((evAmount.getAmount() != null) && evAmount.getAmount().isEmpty()) {
             final BarcodeData data = sendListener.popBarcodeData();
             if ((data != null) && (data.amount > 0)) {
                 evAmount.setAmount(Wallet.getDisplayAmount(data.amount));
diff --git a/app/src/main/java/com/m2049r/xmrwallet/SendFragment.java b/app/src/main/java/com/m2049r/xmrwallet/SendFragment.java
index 8c2f7a23..d8dd5370 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/SendFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/SendFragment.java
@@ -198,10 +198,10 @@ public class SendFragment extends Fragment
         super.onResume();
         Timber.d("onResume");
         activityCallback.setSubtitle(getString(R.string.send_title));
-        if (getConfirmFragment() != null) {
+        if (spendViewPager.getCurrentItem() == SpendPagerAdapter.POS_SUCCESS) {
             activityCallback.setToolbarButton(Toolbar.BUTTON_NONE);
         } else {
-            activityCallback.setToolbarButton(Toolbar.BUTTON_BACK);
+            activityCallback.setToolbarButton(Toolbar.BUTTON_CANCEL);
         }
     }
 
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
index 21fa3978..70ef6a92 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
@@ -202,6 +202,10 @@ public class WalletActivity extends SecureActivity implements WalletFragment.Lis
                         onDisposeRequest();
                         onBackPressed();
                         break;
+                    case Toolbar.BUTTON_CANCEL:
+                        onDisposeRequest();
+                        WalletActivity.super.onBackPressed();
+                        break;
                     case Toolbar.BUTTON_CLOSE:
                         finish();
                         break;
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
index 22908ac5..1a6edbf2 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
@@ -58,6 +58,11 @@ public class ExchangeTextView extends LinearLayout
     }
 
     public boolean validate(double max) {
+        Timber.d("inProgress=%b", isExchangeInProgress());
+        if (isExchangeInProgress()) {
+            shakeExchangeField();
+            return false;
+        }
         boolean ok = true;
         if (xmrAmount != null) {
             try {
@@ -86,6 +91,10 @@ public class ExchangeTextView extends LinearLayout
         tvAmountA.startAnimation(Helper.getShakeAnimation(getContext()));
     }
 
+    void shakeExchangeField() {
+        tvAmountB.startAnimation(Helper.getShakeAnimation(getContext()));
+    }
+
     public void setAmount(String xmrAmount) {
         if (xmrAmount != null) {
             setCurrencyA(0);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java b/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
index f36d8dcd..e06c081c 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/Toolbar.java
@@ -117,6 +117,7 @@ public class Toolbar extends android.support.v7.widget.Toolbar {
     public final static int BUTTON_BACK = 1;
     public final static int BUTTON_CLOSE = 2;
     public final static int BUTTON_DONATE = 3;
+    public final static int BUTTON_CANCEL = 4;
 
     int buttonType = BUTTON_DONATE;
 
@@ -140,6 +141,12 @@ public class Toolbar extends android.support.v7.widget.Toolbar {
                 bDonate.setText(R.string.label_donate);
                 bDonate.setVisibility(View.VISIBLE);
                 break;
+            case BUTTON_CANCEL:
+                Timber.d("BUTTON_CANCEL");
+                bDonate.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_close_white_24dp, 0, 0, 0);
+                bDonate.setText(R.string.label_cancel);
+                bDonate.setVisibility(View.VISIBLE);
+                break;
             case BUTTON_NONE:
             default:
                 Timber.d("BUTTON_NONE");
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 89d11c06..823fe379 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,6 +18,7 @@
     <string name="label_login_wallets">Wallets</string>
     <string name="label_donate">Donate</string>
     <string name="label_close">Close</string>
+    <string name="label_cancel">Cancel</string>
     <string name="label_wallet_advanced_details">Touch for detailed information</string>
 
     <string name="label_send_success">Success!</string>