diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c
index 01a0f24dde21a0093cd24c682553c9ad81acd4fe..ac988e850e5487c1acb4979449e6764fb7746738 100644
--- a/source/blender/renderconverter/intern/convertBlenderScene.c
+++ b/source/blender/renderconverter/intern/convertBlenderScene.c
@@ -2966,14 +2966,14 @@ void RE_rotateBlenderScene(void)
 					   yafray only needs to know about one, the rest can be instanciated.
 					   The dupliMtx list is used for this purpose */
 					if (R.r.renderer==R_YAFRAY) {
-						/* Special case, parent object dupli's: ignore lattices */
+						/* Special case, parent object dupli's: ignore lattices & empty's */
 						if (ob->parent) {
-							if ((ob->parent->type!=OB_LATTICE) && (YAF_objectKnownData(ob)))
+							if ((ob->parent->type!=OB_EMPTY) && (ob->parent->type!=OB_LATTICE) && YAF_objectKnownData(ob))
 								printf("From parent: Added dupli matrix for linked data object %s\n", ob->id.name);
 							else
 								init_render_object(ob);
 						}
-						else if ((ob->type!=OB_EMPTY) && (ob->type!=OB_LAMP) && (YAF_objectKnownData(ob)))
+						else if ((ob->type!=OB_EMPTY) && (ob->type!=OB_LAMP) && YAF_objectKnownData(ob))
 							printf("Added dupli matrix for linked data object %s\n", ob->id.name);
 						else
 							init_render_object(ob);
diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp
index 61d15bff0c9ad292e14814e13da9ba5798b732d6..22f8f1f042af9100167e7c1a99d6997bc2fb07cb 100755
--- a/source/blender/yafray/intern/export_File.cpp
+++ b/source/blender/yafray/intern/export_File.cpp
@@ -1052,11 +1052,10 @@ void yafrayFileRender_t::writeAreaLamp(LampRen* lamp, int num, float iview[4][4]
 	// if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
 	if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on";  power*=R.r.GIpower; }
 	ostr << "<light type=\"arealight\" name=\"LAMP" << num+1 << "\" dummy=\""<< md << "\" power=\"" << power << "\" ";
-	if (!R.r.GIphotons) {
-		int psm=0, sm = lamp->ray_totsamp;
-		if (sm>=25) psm = sm/5;
-		ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" ";
-	}
+	// samples not used for GI with photons, can still be exported, is ignored
+	int psm=0, sm = lamp->ray_totsamp;
+	if (sm>=25) psm = sm/5;
+	ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" ";
 	ostr << ">\n";
 	
 	// transform area lamp coords back to world
@@ -1138,7 +1137,15 @@ void yafrayFileRender_t::writeLamps()
 				//decay = 1;
 			}
 		}
-		ostr << "\" power=\"" << pwr << "\"";
+
+		if (is_sphereL) {
+			// 'dummy' mode for spherelight when used with gpm
+			string md = "off";
+			// if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
+			if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on";  pwr*=R.r.GIpower; }
+			ostr << "\" power=\"" <<  pwr << "\" dummy=\"" << md << "\"";
+		}
+		else ostr << "\" power=\"" << pwr << "\"";
 		
 		// cast_shadows flag not used with softlight, spherelight or photonlight
 		if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) {
@@ -1297,7 +1304,7 @@ void yafrayFileRender_t::writeHemilight()
 void yafrayFileRender_t::writePathlight()
 {
 	ostr.str("");
-	if(R.r.GIphotons)
+	if (R.r.GIphotons)
 	{
 		ostr << "<light type=\"globalphotonlight\" name=\"gpm\" photons=\""<<R.r.GIphotoncount<<"\""<<endl;
 		ostr << "\tradius=\"" <<R.r.GIphotonradius << "\" depth=\""<< ((R.r.GIdepth>2) ? (R.r.GIdepth-1) : 1)
@@ -1305,7 +1312,7 @@ void yafrayFileRender_t::writePathlight()
 		ostr << "</light>"<<endl;
 	}
 	ostr << "<light type=\"pathlight\" name=\"path_LT\" power=\"1.0\" ";
-	ostr << " depth=\"" <<((R.r.GIphotons) ? 1 : R.r.GIdepth)<< "\" caus_depth=\"" << R.r.GIcausdepth <<"\"\n";
+	ostr << " depth=\"" << ((R.r.GIphotons) ? 1 : R.r.GIdepth) << "\" caus_depth=\"" << R.r.GIcausdepth <<"\"\n";
 	if(R.r.GIdirect && R.r.GIphotons) ostr << "direct=\"on\"" << endl;
 	if (R.r.GIcache && ! (R.r.GIdirect && R.r.GIphotons))
 	{
diff --git a/source/blender/yafray/intern/export_Plugin.cpp b/source/blender/yafray/intern/export_Plugin.cpp
index 63f447c3768ad378baf8992b3f4ed43f20b32d25..a3d1624820b452834cd056e8ff9632407b5763ab 100644
--- a/source/blender/yafray/intern/export_Plugin.cpp
+++ b/source/blender/yafray/intern/export_Plugin.cpp
@@ -1058,13 +1058,11 @@ void yafrayPluginRender_t::writeAreaLamp(LampRen* lamp, int num, float iview[4][
 	params["name"]=yafray::parameter_t(temp);
 	params["dummy"]=yafray::parameter_t(md);
 	params["power"]=yafray::parameter_t(power);
-	if (!R.r.GIphotons) 
-	{
-		int psm=0, sm = lamp->ray_totsamp;
-		if (sm>=25) psm = sm/5;
-		params["samples"]=yafray::parameter_t(sm);
-		params["psamples"]=yafray::parameter_t(psm);
-	}
+	// samples not used for GI with photons, can still be exported, is ignored
+	int psm=0, sm = lamp->ray_totsamp;
+	if (sm>=25) psm = sm/5;
+	params["samples"]=yafray::parameter_t(sm);
+	params["psamples"]=yafray::parameter_t(psm);
 	
 	// transform area lamp coords back to world
 	float lpco[4][3];
@@ -1147,7 +1145,16 @@ void yafrayPluginRender_t::writeLamps()
 				//decay = 1;
 			}
 		}
-		params["power"] = yafray::parameter_t(pwr);
+
+		if (is_sphereL) {
+			// 'dummy' mode for spherelight when used with gpm
+			string md = "off";
+			// if no GI used, the GIphotons flag can still be set, so only use when 'full' selected
+			if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on";  pwr*=R.r.GIpower; }
+			params["power"] = yafray::parameter_t(pwr);
+			params["dummy"] = yafray::parameter_t(md);
+		}
+		else params["power"] = yafray::parameter_t(pwr);
 		
 		// cast_shadows flag not used with softlight, spherelight or photonlight
 		if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) {
@@ -1299,7 +1306,7 @@ void yafrayPluginRender_t::writeHemilight()
 
 void yafrayPluginRender_t::writePathlight()
 {
-	if(R.r.GIphotons)
+	if (R.r.GIphotons)
 	{
 		yafray::paramMap_t params;
 		params["type"]=yafray::parameter_t("globalphotonlight");