diff --git a/samples/wip/geometry-grass/GeometryGrassSample.cc b/samples/wip/geometry-grass/GeometryGrassSample.cc
index b8f9196af5997e8c8c0be8b3dde25f9db9d8ffad..96a20145897db2a7ea2d06533a96ba2e566102b7 100644
--- a/samples/wip/geometry-grass/GeometryGrassSample.cc
+++ b/samples/wip/geometry-grass/GeometryGrassSample.cc
@@ -306,7 +306,11 @@ void GeometryGrassSample::init()
         mGrassUBO = UniformBuffer::create();
         mGrassUBO->bind().setData(mGrassUBOData);
 
-        mTrampleSSBOData.mowerPos = glm::vec2(0);
+
+        mTrampleSSBOData.mowerPosX = 0;
+        mTrampleSSBOData.mowerPosY = 0;
+        //        mTrampleSSBOData.mowerPos = glm::vec2(0);
+
         static auto constexpr mowerRange = .75f;
         mTrampleSSBOData.mowerRangeSquared = mowerRange * mowerRange;
         mTrampleSSBO = ShaderStorageBuffer::create();
@@ -381,8 +385,9 @@ void GeometryGrassSample::onRenderOpaquePass(glow::pipeline::RenderContext const
 {
     // UBO + SSBO Update
     {
-        mTrampleSSBOData.mowerPos = mMowerPosition;
-        mTrampleSSBO->bind().setData(mTrampleSSBOData);
+        mTrampleSSBOData.mowerPosX = mMowerPosition.x;
+        mTrampleSSBOData.mowerPosY = mMowerPosition.y;
+        mTrampleSSBO->bind().setData(mTrampleSSBOData, GL_STREAM_DRAW);
 
         applyConfigToUBO();
         mGrassUBOData.cameraUp = getCamera()->handle.getTransform().getUpVector();
@@ -390,7 +395,7 @@ void GeometryGrassSample::onRenderOpaquePass(glow::pipeline::RenderContext const
         mGrassUBOData.cleanVp = info.camData.cleanVp;
         mGrassUBOData.prevCleanVp = info.camData.prevCleanVp;
         mGrassUBOData.runtime = getCurrentTime();
-        mGrassUBO->bind().setData(mGrassUBOData);
+        mGrassUBO->bind().setData(mGrassUBOData, GL_STREAM_DRAW);
     }
 
     // Trampling and mowing
diff --git a/samples/wip/geometry-grass/GeometryGrassSample.hh b/samples/wip/geometry-grass/GeometryGrassSample.hh
index dcb75d6e9f9ffa1cc9ccf56be2468486ee0e3dcb..b6926d1810a50ac1f042af01781fa58302d741a2 100644
--- a/samples/wip/geometry-grass/GeometryGrassSample.hh
+++ b/samples/wip/geometry-grass/GeometryGrassSample.hh
@@ -39,15 +39,17 @@ struct GrassUBOData
 
 struct Trampler
 {
-    glow::std140vec2 pos;
-    glow::std140vec2 velocity;
+    glm::vec2 pos;
+    glm::vec2 velocity;
 };
 
 struct TrampleSSBOData
 {
-    glow::std140vec2 mowerPos;
-    glow::std140float mowerRangeSquared = 1.f;
-    std::vector<Trampler> tramplers;
+    float mowerPosX;
+    float mowerPosY;
+    // glm::vec2 mowerPos;
+    float mowerRangeSquared = 1.f;
+    // std::vector<Trampler> tramplers;
 };
 }
 
diff --git a/samples/wip/geometry-grass/trample.csh b/samples/wip/geometry-grass/trample.csh
index 6b2d28b9b2b8058e6302eb82df0a9df7bb6abc4a..3b1204ec391f8c90e0b59517026c9d92e3d2bd0c 100644
--- a/samples/wip/geometry-grass/trample.csh
+++ b/samples/wip/geometry-grass/trample.csh
@@ -15,7 +15,7 @@ layout(std430) buffer sTrampleInfo
     vec2 mowerPosition;
     float mowerRange2;
 
-    Trampler tramplers[];
+    //Trampler tramplers[];
 } ssboTrampleInfo;
 
 void main()