diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index e075a311c2252b923c9638eaa33d10867a86d963..0ca70fac4374b2b2a594b116e079edc1d44d1759 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -154,7 +154,6 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so
 {	
 	S32 num_output_sections = 1<<dest_sections;
 	LLVector3 scale = mVO->mDrawable->getScale();
-	F32 source_section_length = scale.mV[VZ] / (F32)(1<<source_sections);
 	F32 section_length = scale.mV[VZ] / (F32)num_output_sections;
 	if (source_sections == -1)
 	{
@@ -186,6 +185,7 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so
 		// Iterate from right to left since it may be an in-place computation
 		S32 step_shift = dest_sections-source_sections;
 		S32 num_steps = 1<<step_shift;
+		F32 source_section_length = scale.mV[VZ] / (F32)(1<<source_sections);
 		for (S32 section=num_output_sections-num_steps; section>=0; section -= num_steps)
 		{
 			LLFlexibleObjectSection *last_source_section = &source[section>>step_shift];