diff -Nurpd a/scribus/pageitem.cpp b/scribus/pageitem.cpp
--- a/scribus/pageitem.cpp	2024-01-07 18:07:06.000000000 +0100
+++ b/scribus/pageitem.cpp	2024-01-12 14:57:05.142550453 +0100
@@ -506,6 +506,7 @@ PageItem::PageItem(ScribusDoc *doc, Item
 
 	ImageIntent = Intent_Relative_Colorimetric;
 	m_layerID = m_Doc->activeLayer();
+
 	stroke_gradient = VGradient(VGradient::linear);
 	stroke_gradient.clearStops();
 	if (m_lineColor != CommonStrings::None)
@@ -513,36 +514,35 @@ PageItem::PageItem(ScribusDoc *doc, Item
 		const ScColor& col = m_Doc->PageColors[m_lineColor];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		stroke_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_lineColor, 100);
-		stroke_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_lineColor, 100);
 	}
 	else if (m_Doc->itemToolPrefs().shapeLineColor != CommonStrings::None)
 	{
 		const ScColor& col = m_Doc->PageColors[m_Doc->itemToolPrefs().shapeLineColor];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		stroke_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeLineColor, 100);
-		stroke_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeLineColor, 100);
 	}
 	else if (m_fillColor != CommonStrings::None)
 	{
 		const ScColor& col = m_Doc->PageColors[m_fillColor];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		stroke_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_fillColor, 100);
-		stroke_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_fillColor, 100);
 	}
 	else if (m_Doc->itemToolPrefs().shapeFillColor != CommonStrings::None)
 	{
 		const ScColor& col = m_Doc->PageColors[m_Doc->itemToolPrefs().shapeFillColor];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		stroke_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeFillColor, 100);
-		stroke_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeFillColor, 100);
 	}
 	else if (m_Doc->PageColors.contains("Black"))
 	{
 		const ScColor& col = m_Doc->PageColors["Black"];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		stroke_gradient.addStop(qcol, 0.0, 0.5, 1.0, "Black", 100);
-		stroke_gradient.addStop(qcol, 1.0, 0.5, 1.0, "Black", 100);
 	}
+        const ScColor& col_stroke_right = m_Doc->PageColors["White"];
+        QColor qcol_stroke_right = ScColorEngine::getRGBColor(col_stroke_right, m_Doc);
+        stroke_gradient.addStop(qcol_stroke_right, 1.0, 0.5, 1.0, "White", 100);
+
 	fill_gradient = VGradient(VGradient::linear);
 	fill_gradient.clearStops();
 	if (m_fillColor != CommonStrings::None)
@@ -550,7 +550,6 @@ PageItem::PageItem(ScribusDoc *doc, Item
 		const ScColor& col = m_Doc->PageColors[m_fillColor];
 		QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 		fill_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_fillColor, 100);
-		fill_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_fillColor, 100);
 		GrColorP1 = m_fillColor;
 		GrColorP2 = m_fillColor;
 		GrColorP3 = m_fillColor;
@@ -563,7 +562,6 @@ PageItem::PageItem(ScribusDoc *doc, Item
 			const ScColor& col = m_Doc->PageColors[m_Doc->itemToolPrefs().shapeFillColor];
 			QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 			fill_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeFillColor, 100);
-			fill_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeFillColor, 100);
 			GrColorP1 = m_Doc->itemToolPrefs().shapeFillColor;
 			GrColorP2 = m_Doc->itemToolPrefs().shapeFillColor;
 			GrColorP3 = m_Doc->itemToolPrefs().shapeFillColor;
@@ -576,7 +574,6 @@ PageItem::PageItem(ScribusDoc *doc, Item
 				const ScColor& col = m_Doc->PageColors[m_lineColor];
 				QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 				fill_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_lineColor, 100);
-				fill_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_lineColor, 100);
 				GrColorP1 = m_lineColor;
 				GrColorP2 = m_lineColor;
 				GrColorP3 = m_lineColor;
@@ -589,7 +586,6 @@ PageItem::PageItem(ScribusDoc *doc, Item
 					const ScColor& col = m_Doc->PageColors[m_Doc->itemToolPrefs().shapeLineColor];
 					QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 					fill_gradient.addStop(qcol, 0.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeLineColor, 100);
-					fill_gradient.addStop(qcol, 1.0, 0.5, 1.0, m_Doc->itemToolPrefs().shapeLineColor, 100);
 					GrColorP1 = m_Doc->itemToolPrefs().shapeLineColor;
 					GrColorP2 = m_Doc->itemToolPrefs().shapeLineColor;
 					GrColorP3 = m_Doc->itemToolPrefs().shapeLineColor;
@@ -600,7 +596,6 @@ PageItem::PageItem(ScribusDoc *doc, Item
 					const ScColor& col = m_Doc->PageColors["Black"];
 					QColor qcol = ScColorEngine::getRGBColor(col, m_Doc);
 					fill_gradient.addStop(qcol, 0.0, 0.5, 1.0, "Black", 100);
-					fill_gradient.addStop(qcol, 1.0, 0.5, 1.0, "Black", 100);
 					GrColorP1 = "Black";
 					GrColorP2 = "Black";
 					GrColorP3 = "Black";
@@ -609,6 +604,10 @@ PageItem::PageItem(ScribusDoc *doc, Item
 			}
 		}
 	}
+	const ScColor& col_fill_right = m_Doc->PageColors["White"];
+	QColor qcol_fill_right = ScColorEngine::getRGBColor(col_fill_right, m_Doc);
+	fill_gradient.addStop(qcol_fill_right, 1.0, 0.5, 1.0, "White", 100);
+
 	GrMaskEndX = w;
 	mask_gradient = VGradient(VGradient::linear);
 	mask_gradient.clearStops();
