diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
index c43e0e9..0eaf4ea 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
@@ -799,20 +799,11 @@
             thisP.removeFld(i-1);
         }
 
-        try (XmlCursor thisC = thisP.newCursor()) {
-            thisC.toEndToken();
-            try (XmlCursor otherC = otherP.newCursor()) {
-                otherC.copyXmlContents(thisC);
-            }
-        }
-
         for (XSLFTextRun tr : other.getTextRuns()) {
-            XmlObject xo = tr.getXmlObject();
-            XSLFTextRun run = (xo instanceof CTTextLineBreak)
-                ? newTextRun((CTTextLineBreak)xo)
-                : newTextRun(xo);
+            XmlObject xo = tr.getXmlObject().copy();
+            XSLFTextRun run = addNewTextRun();
+            run.getXmlObject().set(xo);
             run.copy(tr);
-            _runs.add(run);
         }
 
         // set properties again, in case we are based on a different
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFSlideShow.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFSlideShow.java
index c606c4a..e66a2be 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFSlideShow.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFSlideShow.java
@@ -26,13 +26,9 @@
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.sl.usermodel.ShapeType;
-import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import org.apache.poi.xslf.usermodel.XSLFAutoShape;
-import org.apache.poi.xslf.usermodel.XSLFBackground;
-import org.apache.poi.xslf.usermodel.XSLFRelation;
-import org.apache.poi.xslf.usermodel.XSLFSlide;
-import org.apache.poi.xslf.usermodel.XSLFSlideShow;
+import org.apache.poi.xslf.usermodel.*;
 import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -156,4 +152,19 @@
 
         ppt2.close();
     }
+
+    @Test
+    void testSlideImportContent() throws IOException{
+        try (XMLSlideShow ppt = new XMLSlideShow(slTests.openResourceAsStream("templatePPTWithOnlyOneText.pptx"))) {
+            XSLFSlide templateSlide = ppt.getSlides().get(0);
+            XSLFTextShape templateTextShape = (XSLFTextShape) templateSlide.getShapes().get(0);
+            XmlObject templateTextRunXmlObject = templateTextShape.getTextParagraphs().get(0).getTextRuns().get(0).getXmlObject();
+
+            XSLFSlide copySlide = ppt.createSlide();
+            copySlide.importContent(templateSlide);
+            XSLFTextShape copyTextShape = (XSLFTextShape) copySlide.getShapes().get(0);
+            XmlObject copyTextRunXmlObject = copyTextShape.getTextParagraphs().get(0).getTextRuns().get(0).getXmlObject();
+            assertNotEquals(templateTextRunXmlObject, copyTextRunXmlObject);
+        }
+    }
 }
diff --git a/test-data/slideshow/templatePPTWithOnlyOneText.pptx b/test-data/slideshow/templatePPTWithOnlyOneText.pptx
new file mode 100644
index 0000000..7a0e1e7
--- /dev/null
+++ b/test-data/slideshow/templatePPTWithOnlyOneText.pptx
Binary files differ
