Index: scribus/pdflib_core.h
===================================================================
--- scribus/pdflib_core.h	(Revision 13052)
+++ scribus/pdflib_core.h	(Arbeitskopie)
@@ -141,6 +141,7 @@
 	QByteArray ComputeRC4Key(int ObjNum);
 	
 	bool    PDF_ProcessItem(QString& output, PageItem* ite, const Page* pag, uint PNr, bool embedded = false, bool pattern = false);
+	QString PDF_PutSoftShadow(PageItem* ite, const Page* pag);
 	QString PDF_ProcessTableItem(PageItem* ite, const Page* pag);
 	void    PDF_Bookmark(PageItem *currItem, double ypos);
 	bool    PDF_Gradient(QString& output, PageItem *currItem);
Index: scribus/pageitem.cpp
===================================================================
--- scribus/pageitem.cpp	(Revision 13052)
+++ scribus/pageitem.cpp	(Arbeitskopie)
@@ -154,6 +154,12 @@
 	fill_gradient(other.fill_gradient),
 	fillRule(other.fillRule),
 	doOverprint(other.doOverprint),
+	hasSoftShadow(other.hasSoftShadow),
+	softShadowColor(other.softShadowColor),
+	softShadowBlurRadius(other.softShadowBlurRadius),
+	softShadowXOffset(other.softShadowXOffset),
+	softShadowYOffset(other.softShadowYOffset),
+	softShadowDPI(other.softShadowXOffset),
 	LeftLink(other.LeftLink),
 	RightLink(other.RightLink),
 	TopLink(other.TopLink),
@@ -293,6 +299,14 @@
 	//CB Surely we can remove some of these?
 	OldB2 = OldB = oldWidth = Width = w;
 	OldH2 = OldH = oldHeight = Height = h;
+	
+	hasSoftShadow=false;
+	softShadowColor=CommonStrings::None;
+	softShadowBlurRadius=10.0;
+	softShadowXOffset=0.0;
+	softShadowYOffset=0.0;
+	softShadowDPI=300.0;
+	
 	BoundingX = x;
 	BoundingY = y;
 	BoundingW = w;
@@ -1533,13 +1547,18 @@
 
 QImage PageItem::DrawObj_toImage()
 {
+	return DrawObj_toImage_withScale(1.0);
+}
+
+QImage PageItem::DrawObj_toImage_withScale(double scale, bool ignoreGroups)
+{
 	QList<PageItem*> emG;
 	emG.clear();
 	double minx = 99999.9;
 	double miny = 99999.9;
 	double maxx = -99999.9;
 	double maxy = -99999.9;
-	if (Groups.count() != 0)
+	if (!ignoreGroups && Groups.count() != 0)
 	{
 		for (int ga=0; ga<m_Doc->Items->count(); ++ga)
 		{
@@ -1584,16 +1603,22 @@
 		gHeight = maxy - miny;
 		emG.append(this);
 	}
-	return DrawObj_toImage(emG);
+	return DrawObj_toImage_withScale(emG,scale);
 }
 
 QImage PageItem::DrawObj_toImage(QList<PageItem*> &emG)
 {
-	QImage retImg = QImage(qRound(gWidth), qRound(gHeight), QImage::Format_ARGB32);
+	return DrawObj_toImage_withScale(emG,1.0);
+}
+
+QImage PageItem::DrawObj_toImage_withScale(QList<PageItem*> &emG,double canvaScale)
+{
+	qDebug() << "CanvaScale" << canvaScale <<"gWidth x gHeight"<<qRound(gWidth * canvaScale) << qRound(gHeight* canvaScale) <<"T"<<(gWidth * canvaScale*gHeight* canvaScale) / 1024;
+	QImage retImg = QImage(qRound(gWidth * canvaScale), qRound(gHeight * canvaScale), QImage::Format_ARGB32);
 //	retImg.fill( qRgba(255, 255, 255, 0) );
 	retImg.fill( qRgba(0, 0, 0, 0) );
 	ScPainter *painter = new ScPainter(&retImg, retImg.width(), retImg.height(), 1, 0);
-	painter->setZoomFactor(1.0);
+	painter->setZoomFactor(canvaScale);
 	QStack<PageItem*> groupStack;
 	for (int em = 0; em < emG.count(); ++em)
 	{
Index: scribus/propertiespalette.cpp
===================================================================
--- scribus/propertiespalette.cpp	(Revision 13052)
+++ scribus/propertiespalette.cpp	(Arbeitskopie)
@@ -334,6 +334,41 @@
 	Layout44->setSpacing( 4 );
 	Layout44->setMargin( 5 );
 
+	SoftShadowGroup = new QGroupBox( "Soft Shadow", page );
+	SoftShadowGroupLayout = new QVBoxLayout( SoftShadowGroup );
+	hasSoftShadow = new QCheckBox( SoftShadowGroup );
+	hasSoftShadow->setText( "Object has a soft shadow" );
+	hasSoftShadow->setChecked( false );
+	SoftShadowGroupLayout->addWidget( hasSoftShadow );
+
+	SoftShadowOffsetLayout = new QHBoxLayout();
+	SoftShadowGroupLayout->addLayout(SoftShadowOffsetLayout);
+
+	softShadowXOffset = new ScrSpinBox( -3000, 3000, SoftShadowGroup, 0 );
+	softShadowXOffsetLabel = new QLabel( "dx:", SoftShadowGroup );
+	softShadowXOffsetLabel->setBuddy(softShadowXOffset);
+	SoftShadowOffsetLayout->addWidget(softShadowXOffsetLabel);
+	SoftShadowOffsetLayout->addWidget(softShadowXOffset);
+
+	softShadowYOffset = new ScrSpinBox( -3000, 3000, SoftShadowGroup, 0 );
+	softShadowYOffsetLabel = new QLabel( "dy:", SoftShadowGroup );
+	softShadowYOffsetLabel->setBuddy(softShadowYOffset);
+	SoftShadowOffsetLayout->addWidget(softShadowYOffsetLabel);
+	SoftShadowOffsetLayout->addWidget(softShadowYOffset);
+	
+	SoftShadowStyleLayout = new QHBoxLayout();
+	SoftShadowGroupLayout->addLayout(SoftShadowStyleLayout);
+	softShadowColor = new ColorCombo( false );
+	SoftShadowStyleLayout->addWidget(softShadowColor);
+	
+	softShadowBlurRadius = new ScrSpinBox( SoftShadowGroup, 0 );
+	softShadowBlurRadiusLabel = new QLabel( "Blur:", SoftShadowGroup );
+	softShadowBlurRadiusLabel->setBuddy(softShadowBlurRadius);
+	SoftShadowStyleLayout->addWidget(softShadowBlurRadiusLabel);
+	SoftShadowStyleLayout->addWidget(softShadowBlurRadius);
+
+	pageLayout->addWidget( SoftShadowGroup );
+
 	DoGroup = new QToolButton( page );
 	DoGroup->setIcon(QIcon(loadIcon("group.png")));
 	Layout44->addWidget( DoGroup, 0, 0 );
@@ -1492,6 +1527,11 @@
 	connect(Width, SIGNAL(valueChanged(double)), this, SLOT(NewW()));
 	connect(Height, SIGNAL(valueChanged(double)), this, SLOT(NewH()));
 	connect(Rotation, SIGNAL(valueChanged(double)), this, SLOT(setRotation()));
+	connect(hasSoftShadow, SIGNAL(clicked()), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowXOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowYOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowColor, SIGNAL(currentIndexChanged(int)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowBlurRadius, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
 	connect(RoundRect, SIGNAL(valueChanged(double)), this, SLOT(NewCornerRadius()));
 	connect(LineSp, SIGNAL(valueChanged(double)), this, SLOT(NewLineSpacing()));
 	connect(Size, SIGNAL(valueChanged(double)), this, SLOT(NewSize()));
@@ -1997,6 +2037,11 @@
 	disconnect(Ypos, SIGNAL(valueChanged(double)), this, SLOT(NewY()));
 	disconnect(Width, SIGNAL(valueChanged(double)), this, SLOT(NewW()));
 	disconnect(Height, SIGNAL(valueChanged(double)), this, SLOT(NewH()));
+	disconnect(hasSoftShadow, SIGNAL(clicked()), this, SLOT(ChangeSoftShadow()));
+	disconnect(softShadowXOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	disconnect(softShadowYOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	disconnect(softShadowColor, SIGNAL(currentIndexChanged(int)), this, SLOT(ChangeSoftShadow()));
+	disconnect(softShadowBlurRadius, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
 	disconnect(Locked, SIGNAL(clicked()), this, SLOT(handleLock()));
 	disconnect(NoPrint, SIGNAL(clicked()), this, SLOT(handlePrint()));
 	disconnect(NoResize, SIGNAL(clicked()), this, SLOT(handleLockSize()));
@@ -2017,6 +2062,7 @@
 	disconnect(DBottom, SIGNAL(valueChanged(double)), this, SLOT(NewTDist()));
 	setXY(i->xPos(), i->yPos());
 	setBH(i->width(), i->height());
+	setSoftShadow(i->hasSoftShadow, i->softShadowColor, i->softShadowXOffset, i->softShadowYOffset, i->softShadowBlurRadius, i->softShadowDPI);
 	NoPrint->setChecked(!i->printEnabled());
 	setLocked(i->locked());
 	setSizeLocked(i->sizeLocked());
@@ -2040,6 +2086,11 @@
 	connect(Ypos, SIGNAL(valueChanged(double)), this, SLOT(NewY()));
 	connect(Width, SIGNAL(valueChanged(double)), this, SLOT(NewW()));
 	connect(Height, SIGNAL(valueChanged(double)), this, SLOT(NewH()));
+	connect(hasSoftShadow, SIGNAL(clicked()), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowXOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowYOffset, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowColor, SIGNAL(currentIndexChanged(int)), this, SLOT(ChangeSoftShadow()));
+	connect(softShadowBlurRadius, SIGNAL(valueChanged(double)), this, SLOT(ChangeSoftShadow()));
 	connect(Locked, SIGNAL(clicked()), this, SLOT(handleLock()));
 	connect(NoPrint, SIGNAL(clicked()), this, SLOT(handlePrint()));
 	connect(NoResize, SIGNAL(clicked()), this, SLOT(handleLockSize()));
@@ -2501,6 +2552,9 @@
     Ypos->setNewUnit( m_unitIndex );
     Width->setNewUnit( m_unitIndex );
     Height->setNewUnit( m_unitIndex );
+	softShadowXOffset->setNewUnit( m_unitIndex );
+	softShadowYOffset->setNewUnit( m_unitIndex );
+	softShadowBlurRadius->setNewUnit( m_unitIndex );
     imageXOffsetSpinBox->setNewUnit( m_unitIndex );
     imageYOffsetSpinBox->setNewUnit( m_unitIndex );
     dGap->setNewUnit( m_unitIndex );
@@ -2705,6 +2759,38 @@
 	HaveItem = tmp;
 }
 
+void PropertiesPalette::setSoftShadow(bool has, QString color, double dx, double dy, double radius, double dpi)
+{
+	if (!HaveDoc || !m_ScMW || m_ScMW->ScriptRunning)
+		return;
+	bool tmp = HaveItem;
+	HaveItem = false;
+	hasSoftShadow->setChecked(has);
+	softShadowXOffset->setValue(dx*m_unitRatio);
+	softShadowYOffset->setValue(dy*m_unitRatio);
+	softShadowBlurRadius->setValue(radius*m_unitRatio);
+
+	ColorList::Iterator it;
+	int c = 0;
+	if ((color != CommonStrings::None) && (!color.isEmpty()))
+	{
+		c++;
+		for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
+		{
+			if (it.key() == color)
+				break;
+			c++;
+		}
+	}
+	softShadowColor->setCurrentIndex(c);
+
+	softShadowXOffset->setEnabled(has);
+	softShadowYOffset->setEnabled(has);
+	softShadowColor->setEnabled(has);
+	softShadowBlurRadius->setEnabled(has);
+
+	HaveItem = tmp;
+}
 void PropertiesPalette::setRR(double r)
 {
 	if (!m_ScMW || m_ScMW->ScriptRunning)
@@ -3200,6 +3286,21 @@
 	doc->itemSelection_SetScaleH(qRound(ChScale->value() * 10));
 }
 
+void PropertiesPalette::ChangeSoftShadow()
+{
+	if (!HaveDoc || !HaveItem || !m_ScMW || m_ScMW->ScriptRunning)
+		return;
+	HaveItem=false;
+	doc->itemSelection_SetSoftShadow(hasSoftShadow->isChecked(),softShadowColor->currentColor(),
+					softShadowXOffset->value()/m_unitRatio,softShadowYOffset->value()/m_unitRatio,
+					softShadowBlurRadius->value()/m_unitRatio,300);
+	softShadowXOffset->setEnabled(hasSoftShadow->isChecked());
+	softShadowYOffset->setEnabled(hasSoftShadow->isChecked());
+	softShadowColor->setEnabled(hasSoftShadow->isChecked());
+	softShadowBlurRadius->setEnabled(hasSoftShadow->isChecked());
+	HaveItem=true;
+}
+
 void PropertiesPalette::NewX()
 {
 	if (!m_ScMW || m_ScMW->ScriptRunning)
@@ -4462,6 +4563,8 @@
 	TxStroke->updateBox(doc->PageColors, ColorCombo::fancyPixmaps, false);
 	TxFill->view()->setMinimumWidth(TxFill->view()->maximumViewportSize().width() + 24);
 	TxStroke->view()->setMinimumWidth(TxStroke->view()->maximumViewportSize().width() + 24);
+	softShadowColor->updateBox(doc->PageColors, ColorCombo::smallPixmaps, true);
+	softShadowColor->view()->setMinimumWidth(softShadowColor->view()->maximumViewportSize().width() + 24);
 }
 
 void PropertiesPalette::updateCmsList()
@@ -5102,6 +5205,9 @@
 	LSize->setSpecialValueText( tr("Hairline"));
 	Xpos->setSuffix(ein);
 	Ypos->setSuffix(ein);
+	softShadowXOffset->setSuffix(ein);
+	softShadowYOffset->setSuffix(ein);
+	softShadowBlurRadius->setSuffix(ein);
 	Width->setSuffix(ein);
 	Height->setSuffix(ein);
 	imageXOffsetSpinBox->setSuffix(ein);
Index: scribus/documentchecker.cpp
===================================================================
--- scribus/documentchecker.cpp	(Revision 13052)
+++ scribus/documentchecker.cpp	(Arbeitskopie)
@@ -86,7 +86,7 @@
 		itemError.clear();
 		if (((currItem->isAnnotation()) || (currItem->isBookmark)) && (checkerSettings.checkAnnotations))
 			itemError.insert(PDFAnnotField, 0);
-		if (((currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
+		if ((currItem->hasSoftShadow || (currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
 			itemError.insert(Transparency, 0);
 		if ((currItem->GrType != 0) && (checkerSettings.checkTransparency))
 		{
@@ -202,7 +202,7 @@
 		if (!(currDoc->layerPrintable(currItem->LayerNr)) && (checkerSettings.ignoreOffLayers))
 			continue;
 		itemError.clear();
-		if (((currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
+		if ((currItem->hasSoftShadow || (currItem->fillTransparency() != 0.0) || (currItem->lineTransparency() != 0.0) || (currItem->fillBlendmode() != 0) || (currItem->lineBlendmode() != 0)) && (checkerSettings.checkTransparency))
 			itemError.insert(Transparency, 0);
 		if ((currItem->GrType != 0) && (checkerSettings.checkTransparency))
 		{
Index: scribus/pdflib_core.cpp
===================================================================
--- scribus/pdflib_core.cpp	(Revision 13052)
+++ scribus/pdflib_core.cpp	(Arbeitskopie)
@@ -3296,9 +3296,126 @@
 	return tmp;
 }
 
+QString PDFLibCore::PDF_PutSoftShadow(PageItem* ite, const Page* pag)
+{
+	if (Options.Version < PDFOptions::PDFVersion_14 || !ite->hasSoftShadow || ite->softShadowColor==CommonStrings::None)
+		return ""; 
+	QString tmp("q ");
+	ite->softShadowDPI = 300.0;
+	int pixelRadius=round(ite->softShadowBlurRadius / 72.0 * ite->softShadowDPI);
+	QRectF rect=ite->getVisualBoundingRect();
+	tmp += FToStr(rect.width()+2*ite->softShadowBlurRadius) + " 0 0 " + FToStr(rect.height()+2*ite->softShadowBlurRadius)+" " ;
+	tmp += FToStr(rect.left() - pag->xOffset()+ite->softShadowXOffset-ite->softShadowBlurRadius)+" " ;
+	tmp += FToStr(pag->height() - (rect.top() - pag->yOffset())-rect.height()-ite->softShadowYOffset-ite->softShadowBlurRadius)+" cm\n";
+
+	QImage imgC = ite->DrawObj_toImage_withScale(ite->softShadowDPI/(PrefsManager::instance()->appPrefs.DisScale*72.0), true);
+
+	imgC = imgC.copy(-pixelRadius,-pixelRadius,imgC.width()+2*pixelRadius,imgC.height()+2*pixelRadius); // Add border
+	ScImage img = imgC.alphaChannel().convertToFormat(QImage::Format_RGB32);
+
+	ImageEffect eff;
+	ScImageEffectList el;
+	eff.effectCode = ScImage::EF_BLUR;
+	eff.effectParameters = QString("%1 1.0").arg(pixelRadius);
+	el.append(eff);
+	img.applyEffect(el,ite->doc()->PageColors,false);
+
+	uint maskObj = newObject();
+	StartObj(maskObj);
+	PutDoc("<<\n/Type /XObject\n/Subtype /Image\n");
+	PutDoc("/Width "+QString::number(img.width())+"\n");
+	PutDoc("/Height "+QString::number(img.height())+"\n");
+	PutDoc("/ColorSpace /DeviceGray\n");
+	PutDoc("/BitsPerComponent 8\n");
+	uint lengthObj = newObject();
+	PutDoc("/Length "+QString::number(lengthObj)+" 0 R\n");
+	PutDoc("/Filter /FlateDecode\n");
+	PutDoc(">>\nstream\n");
+	int bytesWritten = WriteFlateImageToStream(img, maskObj, false, true, false);
+	PutDoc("\nendstream\nendobj\n");
+	StartObj(lengthObj);
+	PutDoc(QString("    %1\n").arg(bytesWritten));
+	PutDoc("endobj\n");
+
+	StartObj(lengthObj);
+	PutDoc(QString("    %1\n").arg(bytesWritten));
+	PutDoc("endobj\n");
+
+	uint colObj=newObject();
+	StartObj(colObj);
+	PutDoc("<<\n/Type /XObject\n/Subtype /Image\n");
+	PutDoc("/Width 1\n");
+	PutDoc("/Height 1\n");
+	PutDoc("/Interpolate false\n");
+	PutDoc("/BitsPerComponent 8\n");
+	PutDoc("/SMask "+QString::number(maskObj)+" 0 R\n");
+
+	ScImage col(1,1);
+	QString colstr = SetColor(ite->softShadowColor, 100);
+	QFile f;
+	f.open(stderr, QIODevice::WriteOnly);
+	QTextStream debts(&f);
+	debts << QString("-- ")+ite->softShadowColor+": "+colstr+QString(" --") ;
+	if (Options.isGrayscale)
+	{
+		double gf;
+		int g;
+		QTextStream ts(&colstr, QIODevice::ReadOnly);
+		ts >> gf;
+		g = round(gf*255);
+		col.imgInfo.colorspace = ColorSpaceGray;
+		col.qImagePtr()->setPixel(0,0,qRgba(g,g,g,255));
+		PutDoc("/ColorSpace /DeviceGray\n");
+		PutDoc("/Length 1\n");
+		PutDoc(">>\nstream\n");
+		WriteImageToStream(col, colObj, false, true, true);
+		PutDoc("\nendstream\nendobj\n");
+	}
+	else if (Options.UseRGB)
+	{
+		double r,g,b;
+		QTextStream ts(&colstr, QIODevice::ReadOnly);
+		ts >> r;
+		ts >> g;
+		ts >> b;
+		col.imgInfo.colorspace = ColorSpaceRGB;
+		col.qImagePtr()->setPixel(0,0,qRgba(round(r*255),round(g*255),round(b*255),255));
+		PutDoc("/ColorSpace /DeviceRGB\n");
+		PutDoc("/Length 3\n");
+		PutDoc(">>\nstream\n");
+		WriteImageToStream(col, colObj, false, false, false);
+		PutDoc("\nendstream\nendobj\n");
+	}
+	else //CMYK
+	{	
+		double c,m,y,k;
+		QTextStream ts(&colstr, QIODevice::ReadOnly);
+		ts >> c;
+		ts >> m;
+		ts >> y;
+		ts >> k;
+		col.imgInfo.colorspace = ColorSpaceCMYK;
+		col.qImagePtr()->setPixel(0,0,qRgba(round(c*255),round(m*255),round(y*255),round(k*255)));
+		PutDoc("/ColorSpace /DeviceCMYK\n");
+		PutDoc("/Length 4\n");
+		PutDoc(">>\nstream\n");
+		WriteImageToStream(col, colObj, true, false, false);
+		PutDoc("\nendstream\nendobj\n");
+	}
+
+	QString colRes = ResNam+QString::number(ResCount);
+	Seite.ImgObjects[colRes] = colObj;
+	ResCount++;
+	tmp += "/"+colRes+" Do Q\n";
+	return tmp;
+}	
+
+
+
 bool PDFLibCore::PDF_ProcessItem(QString& output, PageItem* ite, const Page* pag, uint PNr, bool embedded, bool pattern)
 {
 	QString tmp(""), tmpOut;
+	tmp += PDF_PutSoftShadow(ite,pag);
 	ite->setRedrawBounding();
 	double x = pag->xOffset();
 	double y = pag->yOffset();
Index: scribus/scribusdoc.cpp
===================================================================
--- scribus/scribusdoc.cpp	(Revision 13052)
+++ scribus/scribusdoc.cpp	(Arbeitskopie)
@@ -5069,7 +5069,25 @@
 	return false;
 }
 
+void ScribusDoc::itemSelection_SetSoftShadow(bool has, QString color, double dx, double dy, double radius, double dpi)
+{
+	uint selectedItemCount=m_Selection->count();
+	if (selectedItemCount == 1)
+	{
+		for (uint a = 0; a < selectedItemCount; ++a)
+		{
+			m_Selection->itemAt(a)->hasSoftShadow=has;
+			m_Selection->itemAt(a)->softShadowColor=color;
+			m_Selection->itemAt(a)->softShadowXOffset=dx;
+			m_Selection->itemAt(a)->softShadowYOffset=dy;
+			m_Selection->itemAt(a)->softShadowBlurRadius=radius;
+			m_Selection->itemAt(a)->softShadowDPI=dpi;
+			m_Selection->itemAt(a)->update();
+		}
+	}
+	changed();
 
+}
 
 void ScribusDoc::itemSelection_SetLineWidth(double w)
 {
Index: scribus/pageitem.h
===================================================================
--- scribus/pageitem.h	(Revision 13052)
+++ scribus/pageitem.h	(Arbeitskopie)
@@ -253,6 +253,8 @@
 	virtual void DrawObj_Post(ScPainter *p);
 	virtual void DrawObj_Item(ScPainter *p, QRectF e, double sc) = 0;
 	QImage DrawObj_toImage();
+	QImage DrawObj_toImage_withScale(double scale, bool ignoreGroups=false);
+	QImage DrawObj_toImage_withScale(QList<PageItem*> &emG,double canvaScale);
 	QImage DrawObj_toImage(QList<PageItem*> &emG);
 	
 	virtual void applicableActions(QStringList& actionList) = 0;
@@ -491,6 +493,12 @@
 	VGradient fill_gradient;
 	bool fillRule;
 	bool doOverprint;
+	bool hasSoftShadow;
+	QString softShadowColor;
+	double softShadowBlurRadius;
+	double softShadowXOffset;
+	double softShadowYOffset;
+	double softShadowDPI;
 /* Additions for Table Support */
 	PageItem* LeftLink;
 	PageItem* RightLink;
Index: scribus/scribusdoc.h
===================================================================
--- scribus/scribusdoc.h	(Revision 13052)
+++ scribus/scribusdoc.h	(Arbeitskopie)
@@ -807,6 +807,8 @@
 	void itemSelection_SetNamedCharStyle(const QString & name, Selection* customSelection=0);
 	void itemSelection_SetNamedLineStyle(const QString & name, Selection* customSelection=0);
 
+	void itemSelection_SetSoftShadow(bool has, QString color, double dx, double dy, double radius, double dpi);
+
 	void itemSelection_SetLineWidth(double w);
 	void itemSelection_SetLineArt(Qt::PenStyle w);
 	void itemSelection_SetLineJoin(Qt::PenJoinStyle w);
Index: scribus/propertiespalette.h
===================================================================
--- scribus/propertiespalette.h	(Revision 13052)
+++ scribus/propertiespalette.h	(Arbeitskopie)
@@ -191,6 +191,7 @@
 	void setBH(double x, double y);
 	void setR(double r);
 	void setRR(double r);
+	void setSoftShadow(bool has, QString color, double dx, double dy, double radius, double dpi);
 	void setCols(int r, double g);
 // 	void setLspMode(QAction *);
 	void setLineSpacingMode(int id);
@@ -251,6 +252,7 @@
 	void NewW();
 	void NewH();
 	void setRotation();
+	void ChangeSoftShadow();
 	void NewCornerRadius();
 	void NewLineSpacing();
 	void HandleGapSwitch();
@@ -367,6 +369,9 @@
 	QGridLayout* Layout12_2;
 	QGridLayout* imagePageNumberSelector; 
 	QHBoxLayout* NameGroupLayout;
+	QVBoxLayout* SoftShadowGroupLayout;
+	QHBoxLayout* SoftShadowOffsetLayout;
+	QHBoxLayout* SoftShadowStyleLayout;
 	QGridLayout* GeoGroupLayout;
 	QGridLayout* LayerGroupLayout;
 	QHBoxLayout* ShapeGroupLayout;
@@ -408,6 +413,9 @@
 	QLabel* heightLabel;
 	QLabel* rotationLabel;
 	QLabel* basepointLabel;
+	QLabel* softShadowXOffsetLabel;
+	QLabel* softShadowYOffsetLabel;
+	QLabel* softShadowBlurRadiusLabel;
 	QLabel* LevelTxt;
 	QLabel* SRect;
 	QLabel* SRect2;
@@ -500,6 +508,7 @@
 	QGroupBox* NameGroup;
 	QGroupBox* GeoGroup;
 	QGroupBox* LayerGroup;
+	QGroupBox* SoftShadowGroup;
 	QFrame* GroupBoxCM;
 	QGroupBox* TLines;
 	QGroupBox* GroupBox3a;
@@ -515,6 +524,7 @@
 	QToolButton* textFlowUsesBoundingBox2;
 	QToolButton* textFlowUsesContourLine2;
 	QToolButton* textFlowUsesImageClipping2;
+	QCheckBox* hasSoftShadow;
 	QCheckBox* Aspect;
 	QCheckBox* flippedPathText;
 	QCheckBox* showcurveCheckBox;
@@ -533,6 +543,7 @@
 	QComboBox* LJoinStyle;
 	QComboBox* LEndStyle;
 	ColorCombo* TxFill;
+	ColorCombo* softShadowColor;
 	ScComboBox* blendMode;
 //	QComboBox *optMarginCombo;
 	QCheckBox *optMarginCheckLeftProtruding;
@@ -548,6 +559,9 @@
 	ScrSpinBox* Ypos;
 	ScrSpinBox* Height;
 	ScrSpinBox* Rotation;
+	ScrSpinBox* softShadowXOffset;
+	ScrSpinBox* softShadowYOffset;
+	ScrSpinBox* softShadowBlurRadius;
 	ScrSpinBox* RoundRect;
 	ScrSpinBox* dGap;
 	ScrSpinBox* DTop;
Index: scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp
===================================================================
--- scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp	(Revision 13052)
+++ scribus/plugins/fileloader/scribus134format/scribus134format_save.cpp	(Arbeitskopie)
@@ -1281,6 +1281,12 @@
 	docu.writeAttribute("YPOS",item->yPos());
 	docu.writeAttribute("WIDTH",item->width());
 	docu.writeAttribute("HEIGHT",item->height());
+	docu.writeAttribute("HASSOFTSHADOW",item->hasSoftShadow ? 1 : 0);
+	docu.writeAttribute("SOFTSHADOWXOFFSET",item->softShadowXOffset);
+	docu.writeAttribute("SOFTSHADOWYOFFSET",item->softShadowYOffset);
+	docu.writeAttribute("SOFTSHADOWCOLOR",item->softShadowColor);
+	docu.writeAttribute("SOFTSHADOWBLURRADIUS",item->softShadowBlurRadius);
+	docu.writeAttribute("SOFTSHADOWDPI",item->softShadowDPI);
 	docu.writeAttribute("RADRECT",item->cornerRadius());
 	docu.writeAttribute("FRTYPE", item->FrameType);
 	docu.writeAttribute("CLIPEDIT", item->ClipEdited ? 1 : 0);
Index: scribus/plugins/fileloader/scribus134format/scribus134format.cpp
===================================================================
--- scribus/plugins/fileloader/scribus134format/scribus134format.cpp	(Revision 13052)
+++ scribus/plugins/fileloader/scribus134format/scribus134format.cpp	(Arbeitskopie)
@@ -2417,6 +2417,13 @@
 		currItem->setTextFlowMode(PageItem::TextFlowDisabled);
 	currItem->DashOffset = obj->attribute("DASHOFF", "0.0").toDouble();
 	currItem->setReversed(static_cast<bool>(obj->attribute("REVERS", "0").toInt()));
+
+	currItem->hasSoftShadow = static_cast<bool>(obj->attribute("HASSOFTSHADOW", "0").toInt());
+	currItem->softShadowXOffset = obj->attribute("SOFTSHADOWXOFFSET", "0.0").toDouble();
+	currItem->softShadowYOffset = obj->attribute("SOFTSHADOWYOFFSET", "0.0").toDouble();
+	currItem->softShadowColor = obj->attribute("SOFTSHADOWCOLOR", CommonStrings::None);
+	currItem->softShadowBlurRadius = obj->attribute("SOFTSHADOWBLURRADIUS", "300.0").toDouble();
+
 	currItem->setLocked(static_cast<bool>(obj->attribute("LOCK", "0").toInt()));
 	currItem->setSizeLocked(static_cast<bool>(obj->attribute("LOCKR", "0").toInt()));
 	currItem->setFillTransparency(obj->attribute("TransValue", "0.0").toDouble());
