diff --git a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php
index 8207e78422950a616c2c3b92e2bf8113c418282d..ff687074e4a66cc50c457c685fc1757d1529dcb6 100644
--- a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php
+++ b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php
@@ -61,10 +61,12 @@ class CreditmemoFactory
 
             $item = $this->convertor->itemToCreditmemoItem($orderItem);
             if ($orderItem->isDummy()) {
-                $qty = 1;
                 if (isset($data['qtys'][$orderItem->getParentItemId()])) {
-                    $qty = $this->calculateProductOptions($orderItem, $data['qtys']);
+                    $parentQty = $data['qtys'][$orderItem->getParentItemId()];
+                } else {
+                    $parentQty = $orderItem->getParentItem() ? $orderItem->getParentItem()->getQtyToRefund() : 1;
                 }
+                $qty = $this->calculateProductOptions($orderItem, $parentQty);
                 $orderItem->setLockedDoShip(true);
             } else {
                 if (isset($qtys[$orderItem->getId()])) {
@@ -139,10 +141,12 @@ class CreditmemoFactory
 
             $item = $this->convertor->itemToCreditmemoItem($orderItem);
             if ($orderItem->isDummy()) {
-                $qty = 1;
                 if (isset($data['qtys'][$orderItem->getParentItemId()])) {
-                    $qty = $this->calculateProductOptions($orderItem, $data['qtys']);
+                    $parentQty = $data['qtys'][$orderItem->getParentItemId()];
+                } else {
+                    $parentQty = $orderItem->getParentItem() ? $orderItem->getParentItem()->getQtyToRefund() : 1;
                 }
+                $qty = $this->calculateProductOptions($orderItem, $parentQty);
             } else {
                 if (isset($qtys[$orderItem->getId()])) {
                     $qty = (double)$qtys[$orderItem->getId()];
@@ -261,15 +265,15 @@ class CreditmemoFactory
      * @param array $qtys
      * @return int
      */
-    private function calculateProductOptions(\Magento\Sales\Api\Data\OrderItemInterface $orderItem, $qtys)
+    private function calculateProductOptions(\Magento\Sales\Api\Data\OrderItemInterface $orderItem, $parentQty)
     {
-        $qty = 1;
+        $qty = $parentQty;
         $productOptions = $orderItem->getProductOptions();
         if (isset($productOptions['bundle_selection_attributes'])) {
             $bundleSelectionAttributes = $this->getUnserialize()
                 ->unserialize($productOptions['bundle_selection_attributes']);
             if ($bundleSelectionAttributes) {
-                $qty = $bundleSelectionAttributes['qty'] * $qtys[$orderItem->getParentItemId()];
+                $qty = $bundleSelectionAttributes['qty'] * $parentQty;
             }
         }
         return $qty;